Skip to content

Commit 34681ef

Browse files
authored
Feature/storm 60 (#64)
* Improve UUID support. * Improve documentation. Relates to #60
1 parent 237df08 commit 34681ef

24 files changed

Lines changed: 1356 additions & 591 deletions

File tree

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
## Why Storm?
2525

26-
Storm draws inspiration from established ORMs such as Hibernate, but is built from scratch around a clear design philosophy: capturing exactly what you want to do using the minimum amount of code, optimized for modern Kotlin and Java.
26+
Storm draws inspiration from established ORMs such as Hibernate, but is built from scratch around a clear design philosophy: capturing exactly what you want to do using the minimum amount of code, optimized for Kotlin and modern Java.
2727

2828
**Storm’s mission:** Make database development productive and enjoyable, with full developer control and high performance.
2929

@@ -222,8 +222,9 @@ Deep dives into Storm's internals. You don't need these to be productive, but th
222222
| [Hydration](docs/hydration.md) | Result mapping to records (16 min) |
223223
| [Dirty Checking](docs/dirty-checking.md) | Update modes and change detection (19 min) |
224224
| [Entity Cache](docs/entity-cache.md) | Transaction-scoped caching and identity (10 min) |
225-
| [SQL Logging](docs/sql-logging.md) | Declarative query logging with `@SqlLog` (6 min) |
226225
| [Configuration](docs/configuration.md) | System properties reference (7 min) |
226+
| [SQL Logging](docs/sql-logging.md) | Declarative query logging with `@SqlLog` (6 min) |
227+
| [Metrics](docs/metrics.md) | JMX runtime metrics for monitoring (5 min) |
227228

228229
### Resources
229230

docs/comparison.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,23 +156,25 @@ MyBatis is a SQL mapper that gives you full control over every query. You write
156156

157157
## Storm vs jOOQ
158158

159-
jOOQ generates Java code from your database schema, providing a type-safe SQL DSL that mirrors the structure of your tables. Storm takes the opposite direction: you define entities in code, and the metamodel is generated from those entities. jOOQ excels at complex SQL (window functions, CTEs, recursive queries) where its DSL closely follows SQL syntax. Storm excels at entity-oriented operations where automatic relationship handling and repository patterns reduce boilerplate.
159+
jOOQ generates Java code from your database schema, providing a type-safe SQL DSL that mirrors the structure of your tables. Storm also treats the database schema as the source of truth, but instead of generating code from the schema, you write entity definitions that reflect it, and the metamodel is generated from those entities. Both frameworks provide compile-time type safety, but queries look very different. jOOQ excels at complex SQL (window functions, CTEs, recursive queries) where its DSL closely follows SQL syntax, but this means every join, column reference, and condition must be spelled out explicitly. Storm queries are more concise: the metamodel and automatic join derivation from `@FK` annotations let you write queries that focus on what you want rather than how to join it. Storm excels at entity-oriented operations where automatic relationship handling and repository patterns reduce boilerplate.
160160

161161
| Aspect | Storm | jOOQ |
162162
|--------|-------|------|
163-
| **Approach** | Entity-first, convention | SQL-first, code generation |
163+
| **Approach** | Schema-reflective ORM | Schema-driven code generation |
164164
| **Polymorphism** | Sealed types (Single-Table, Joined, Polymorphic FK) | Manual (via SQL DSL) |
165165
| **Type Safety** | Metamodel from entities | Generated from schema |
166166
| **Setup** | Define entities, code generation | Schema, code generation |
167167
| **Entities** | Records/data classes with `Entity` | Records or POJOs |
168168
| **Query Style** | Repository + ORM DSL + SQL Templates | SQL-like DSL |
169+
| **Query Verbosity** | Concise; auto joins from `@FK`, metamodel shortcuts | Verbose; explicit joins, columns, and conditions |
169170
| **Relationships** | Automatic from `@FK` | Manual joins |
170171
| **Transactions** | Programmatic + `@Transactional` (Spring) | DSL context, Spring integration |
171172
| **License** | Apache 2.0 | Commercial for some DBs |
172173

173174
### When to Choose Storm
174175

175-
- You prefer defining entities in code, not generating from schema
176+
- You prefer writing entity definitions that reflect the schema over generating code from it
177+
- You want concise, type-safe queries with automatic join derivation
176178
- You want automatic relationship handling
177179
- You value convention over configuration
178180
- You need a fully open-source solution
@@ -287,14 +289,14 @@ Ktorm is a lightweight Kotlin ORM that uses entity interfaces and DSL-based tabl
287289

288290
## Summary
289291

290-
Storm is a newer framework, so community resources and third-party tutorials are still growing. However, the API is designed to be intuitive for developers familiar with SQL and modern Kotlin/Java.
292+
Storm is a newer framework, so community resources and third-party tutorials are still growing. However, the API is designed to be intuitive for developers familiar with SQL and Kotlin and modern Java.
291293

292294
Choose Storm if you value:
293295
- **Simplicity** over complexity
294296
- **Predictability** over magic
295297
- **Immutability** over managed state
296298
- **Explicit** over implicit behavior
297-
- **Kotlin-first** development (or modern Java with records)
299+
- **Kotlin and modern Java** development with first-class support for both
298300

299301
Ready to try it? See the [Getting Started](getting-started.md) guide.
300302

0 commit comments

Comments
 (0)