a orm based on code generation
Java
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.settings/gradle
bootstrap
docs
domain-testing
domain
features
gradle/wrapper
migrations
perf
starter
util
.checkstyle
.gitignore
.travis.yml
LICENSE.markdown
README.markdown
build.gradle
cleanup.xml
formatter.xml
gradlew
gradlew.bat
settings.gradle

README.markdown

Joist is an ORM based on code generation.

The goal is to provide Rails-like "empty domain objects" in an ORM that is simple, pleasant to use, and scales nicely to really large schemas.

See joist.ws for more information.

Build against MySQL

The Joist test suite requires running tests against a local database; to use MySQL for this:

  • Edit features/build.properties (which is not checked in) and set your local MySQL password

    On a clean ~18.04 Ubuntu, see this SO answer to set your local root password.

  • Run ./gradlew install

Build against Postgres

The Joist test suite requires running tests against a local database; to use Postgres for this:

  • Edit features/build-pg.properties (which is not checked in) and set your local postgres user/admin password

    On a clean Ubuntu, Postgres's admin user/password is configured by:

    • sudo -u postgres psql postgres and then \password postgres to set your local admin password
    • In postgresql.conf ensure listen_addresses is set
  • Edit features/.../Registry.java and change the db field to Db.PG

  • Edit features/.../JoistCli.java and change the db field to Db.PG

  • Run ./gradlew install

Note that because of Postgres's ability to defer FK constraints, the features/.../codegen output will all change as the MySQL version is currently checked-in.

Todo

  • Composite columns (e.g. TimePoint with both time+zone), if needed
  • Don't muck with system properties
  • Repo interfaces
    • Implement stub that copies values (iterates Alias, toJdbcValue, ArrayList<Object>)
    • Only one commit/flush at a time, serialized transaction isolation, leverage op locks
  • Configuration option (global, per-collection) to disable collection ticking
    • ...maybe remove/solve annoyance of cross-collection stomp?
  • Document PostgreSQL/MySQL no fsync settings for faster tests