The goal of this project is to show how hard it is to use PostgreSQL extra features (JSON, custom types, etc.) in various ORM frameworks.
Read the article Finding the Best Java ORM Framework for PostgreSQL on DZone.
Each ORM has its own root project. In each project there is an implementation of AirlinesService
. Its a good place to start exploring the code.
Following PostgreSQL features has been implemented by each project.
- JSON type column. Sorting and filtering by this column.
- Custom composite type column.
- Enumerated type column.
- Array type column.
- Stored procedures with OUT parameters.
- Auditing to determine who and when created/modified a record. And what revision the record has.
- Paging and sorting of the selected records by Spring Data's
Pageable
class. - Java 8 time API for date-time types.
Check out the schema.sql
file for more details about the schema.
- Install the Gradle and PostgreSQL on your machine. To count SLOC install the CLOC.
- Initialize the database by executing
create_database.sql
script. - Execute
run.sh
to run all ORM implementations. Application cleans its database automatically.
- ActiveJDBC
- Apache Cayenne
- Apache OpenJPA
- DataNucleus Access Platform (formerly known as JPOX)
- Ebean
- EclipseLink
- JOOQ
- MyBatis
- Spring Data JPA/Hibernate