Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stephenh/joist-java
a Java orm based on code generation
https://github.com/stephenh/joist-java
java mysql orm postgresql
Last synced: 3 months ago
JSON representation
a Java orm based on code generation
- Host: GitHub
- URL: https://github.com/stephenh/joist-java
- Owner: stephenh
- License: other
- Created: 2008-09-26T23:39:03.000Z (over 16 years ago)
- Default Branch: master
- Last Pushed: 2021-10-11T02:04:35.000Z (over 3 years ago)
- Last Synced: 2024-10-12T10:15:06.336Z (3 months ago)
- Topics: java, mysql, orm, postgresql
- Language: Java
- Homepage: http://joist.ws
- Size: 55.5 MB
- Stars: 29
- Watchers: 8
- Forks: 10
- Open Issues: 3
-
Metadata Files:
- Readme: README.markdown
- License: LICENSE.markdown
Awesome Lists containing this project
README
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](http://joist.ws) for more information.
Status
======This project had been used in production for ~4-5 years, but that system is now shutdown and so Joist is maintenance mode.
I assert it is still basically a best-in-class ORM in the Java ecosystem, for it's specific codegen-/convention-driven workflow, but it could use some updating for modern Java idioms if anyone wants to pick it up.
Artifacts
=========The artifacts are available in [Jitpack](https://jitpack.io/#stephenh/joist), i.e. with artifact names of `com.github.stephenh.joist:joist-util:1.14.0`.
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](https://stackoverflow.com/questions/33991228/what-is-the-default-root-pasword-for-mysql-5-7/50305285#50305285) 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`)
* 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