Joist is a simple, productive Java ORM with no boilerplate, type-safe queries, and no runtime class generation.
How it Works
You write migrations to modify your schema:
cycle to update your database and get clean, getter/setter-free domain objects:
Now you can write type-safe queries:
The goal is a simple, “it just works” domain layer for enterprise-scale schemas.
To jump in, see getting started.
Why Joist is Awesome
- Domain Objects that are clean, simple, and “just work”
- Type-Safe Queries that won’t compile if your schema changes
- Auto-Maintained Back Pointers so that parent/child collections are always in sync
- Validation Rules for consistently enforcing business logic
- Migrations for maintaining your schema
- Eager Loading to avoid the N+1 problem even in nested for loops
- Performance that is as-fast-or-faster than Hibernate
- Type-Safe Changed Properties
- Aliases facilitate writing type-safe queries
- Shims to map data instead of reflection or runtime-generated classes
- Patterns like Unit of Work, Identity Map, etc.
- Code Generation to avoid boilerplate
- Eclipse Tips
- Joist Builder Defaults
- Joist, the Java ORM for Me
- Joist Tip–Fast Database Resets
- Joist vs. Hibernate SQL
Joist is tailored for projects that agree with its opinions:
- Enterprise teams are best served by as much type safety as possible
- Domain objects should match and be driven by the schema
- PostgreSQL (and MySQL in ANSI mode) are the supported databases
- Waiting for your ORM to start shouldn’t kill your TDD loop