diff --git a/website/src/pages/comparison.js b/website/src/pages/comparison.js index 564fc1212..35d1f75d4 100644 --- a/website/src/pages/comparison.js +++ b/website/src/pages/comparison.js @@ -66,16 +66,16 @@ function buildBody() { const matrix = `
| Feature | Storm | JPA / Hibernate | jOOQ | Jimmer | Exposed | +Feature | Storm | JPA / Hibernate | jOOQ | Jimmer | Exposed | Ktorm |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Entity model | Immutable data class (~5 lines) | Mutable class (~30, ~10 with Lombok) | Generated from schema | Immutable interface (KSP-generated) | DSL table object (+ optional DAO) | |||||||
| Immutable entities | Yes | No | Yes | Yes | DSL only | |||||||
| Type-safe queries | Yes | Criteria API | Yes | Yes | Yes | |||||||
| N+1 handling | Single-query entity graph | Common pitfall | Manual | Batched queries | Manual | |||||||
| Full SQL escape hatch | SQL templates | Native queries | It is SQL | SQL expressions | Raw exec() | |||||||
| Languages | Kotlin + Java | Kotlin + Java | Kotlin + Java | Kotlin + Java | Kotlin only | |||||||
| License | Apache 2.0 | LGPL 2.1 | Commercial for some DBs | Apache 2.0 | Apache 2.0 | |||||||
| Entity model | Immutable data class (~5 lines) | Mutable class (~30, ~10 with Lombok) | Generated from schema | Immutable interface (KSP-generated) | DSL table object (+ optional DAO) | Mutable interface (+ DSL table) | ||||||
| Immutable entities | Yes | No | Yes | Yes | DSL only | No | ||||||
| Type-safe queries | Yes | Criteria API | Yes | Yes | Yes | Yes | ||||||
| N+1 handling | Single-query entity graph | Common pitfall | Manual | Batched queries | Manual | Manual | ||||||
| Full SQL escape hatch | SQL templates | Native queries | It is SQL | SQL expressions | Raw exec() | Raw JDBC | ||||||
| Languages | Kotlin + Java | Kotlin + Java | Kotlin + Java | Kotlin + Java | Kotlin only | Kotlin only | ||||||
| License | Apache 2.0 | LGPL 2.1 | Commercial for some DBs | Apache 2.0 | Apache 2.0 | Apache 2.0 |