You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.4 KiB
2.4 KiB
Java ORM test
Initial assumptions
- JPA is f***ing slow, due too many layers of abstraction
- NO xml and other shit-styled non-code-like sources must be needed
- no additional tools to work (only boxed with technology set or none is applicable)
Initila list of techs
- Apache Cayenne
- Ebean
- jOOQ
- speedment
- ORMLite Core
- EclipseLink
- MyBatis
- Querydsl
- Hibernate (as JPA representative - zero mark)
Initial criteria
Must:
- encrypted columns
- no raw SQL for simple CRUD operations
- support for PostgreSQL
Good to see if:
- support for MariaDB
- support extended PostgreSQL features (including json and array)
- "N+1" problem automatic solutions (as much as possible)
- ability to generate raw SQL (to be executed elsewhere)
- support for binary (BLOB) storage and extraction (10Mb per record max)
Test plan
- postgres version 14 & 14-alpine (test database performance baseline)
- two databases (one with partitioning, one without)
- tables per database
- xxs [50 records]
- xs [500 records]
- s [5000 records]
- m [50000 records]
- l [500000 records]
- xl [5000000 records]
- xxl [50000000 records]
- each test module starts a fresh copy of database
- database content is procedure-generated
- random sequences must be pregenerated to be exactly same for all tests (to eliminate test-path diviations)
- random sequence for each test is unique and not intersect (to eliminate postgresql optimizations)
Requests plan
- search
- random get by id
- find by integer equals
- find by string equals
- find by date equals
- find by integer more X & less Y
- find by float more X & less Y
- find by date after X & before Y