|
| 1 | +# Doma |
| 2 | + |
| 3 | +Doma is a database access framework for Java that provides compile-time code generation, type-safe query building, and SQL template support. It offers a unique approach to database programming with annotation processing for compile-time validation and zero runtime dependencies. |
| 4 | + |
| 5 | +## Key Features |
| 6 | + |
| 7 | +- **Compile-time Code Generation**: Uses annotation processing to generate DAO implementations and validate SQL queries at compile time |
| 8 | +- **Type-safe Criteria API**: Build queries programmatically with full type safety and IDE support |
| 9 | +- **Two-way SQL**: Write SQL templates that work both as standalone SQL and within the framework |
| 10 | +- **Entity Associations**: Support for one-to-one, one-to-many, and many-to-one relationships |
| 11 | +- **Zero Dependencies**: Runs independently without requiring additional libraries |
| 12 | +- **Multi-language Support**: First-class support for Java and Kotlin |
| 13 | +- **Framework Integration**: Seamless integration with Spring Boot, Quarkus, and other frameworks |
| 14 | + |
| 15 | +## Architecture |
| 16 | + |
| 17 | +Doma follows a code-first approach where: |
| 18 | +1. You define entities using annotations |
| 19 | +2. Annotation processors generate DAO implementations at compile time |
| 20 | +3. SQL queries are validated against entity definitions |
| 21 | +4. Runtime execution uses generated, optimized code |
| 22 | + |
| 23 | +## Use Cases |
| 24 | + |
| 25 | +- Applications requiring complex SQL queries with type safety |
| 26 | +- Projects needing compile-time validation of database operations |
| 27 | +- Systems where performance and minimal dependencies are critical |
| 28 | +- Teams preferring SQL-centric development over ORM abstractions |
| 29 | + |
| 30 | +## Docs |
| 31 | + |
| 32 | +- [Getting Started Guide](https://doma.readthedocs.io/en/stable/getting-started.html) |
| 33 | +- [Configuration](https://doma.readthedocs.io/en/stable/config.html) |
| 34 | +- [Basic Usage](https://doma.readthedocs.io/en/stable/basic.html) |
| 35 | +- [Domain Types](https://doma.readthedocs.io/en/stable/domain.html) |
| 36 | +- [Embeddable Objects](https://doma.readthedocs.io/en/stable/embeddable.html) |
| 37 | +- [Entity Mapping](https://doma.readthedocs.io/en/stable/entity.html) |
| 38 | +- [Data Access Objects (DAO)](https://doma.readthedocs.io/en/stable/dao.html) |
| 39 | +- [Aggregate Strategy](https://doma.readthedocs.io/en/stable/aggregate-strategy.html) |
| 40 | +- [Query Operations](https://doma.readthedocs.io/en/stable/query/) |
| 41 | + - [Select Queries](https://doma.readthedocs.io/en/stable/query/select.html) |
| 42 | + - [Insert Operations](https://doma.readthedocs.io/en/stable/query/insert.html) |
| 43 | + - [Update Operations](https://doma.readthedocs.io/en/stable/query/update.html) |
| 44 | + - [Delete Operations](https://doma.readthedocs.io/en/stable/query/delete.html) |
| 45 | + - [Batch Insert](https://doma.readthedocs.io/en/stable/query/batch-insert.html) |
| 46 | + - [Batch Update](https://doma.readthedocs.io/en/stable/query/batch-update.html) |
| 47 | + - [Batch Delete](https://doma.readthedocs.io/en/stable/query/batch-delete.html) |
| 48 | + - [Multi-row Insert](https://doma.readthedocs.io/en/stable/query/multi-row-insert.html) |
| 49 | + - [Stored Procedures](https://doma.readthedocs.io/en/stable/query/procedure.html) |
| 50 | + - [Functions](https://doma.readthedocs.io/en/stable/query/function.html) |
| 51 | + - [Script Execution](https://doma.readthedocs.io/en/stable/query/script.html) |
| 52 | + - [Query Factory](https://doma.readthedocs.io/en/stable/query/factory.html) |
| 53 | + - [SQL Processor](https://doma.readthedocs.io/en/stable/query/sql-processor.html) |
| 54 | +- [Query Builder](https://doma.readthedocs.io/en/stable/query-builder/) |
| 55 | +- [Type-safe Criteria API](https://doma.readthedocs.io/en/stable/query-dsl.html) |
| 56 | +- [SQL Templates (Two-way SQL)](https://doma.readthedocs.io/en/stable/sql.html) |
| 57 | +- [Expression Language](https://doma.readthedocs.io/en/stable/expression.html) |
| 58 | +- [Transaction Management](https://doma.readthedocs.io/en/stable/transaction.html) |
| 59 | +- [Build Configuration](https://doma.readthedocs.io/en/stable/build.html) |
| 60 | +- [Annotation Processing](https://doma.readthedocs.io/en/stable/annotation-processing.html) |
| 61 | +- [Lombok Support](https://doma.readthedocs.io/en/stable/lombok-support.html) |
| 62 | +- [Kotlin Support](https://doma.readthedocs.io/en/stable/kotlin-support.html) |
| 63 | +- [SLF4J Integration](https://doma.readthedocs.io/en/stable/slf4j-support.html) |
| 64 | +- [Java Module System Support](https://doma.readthedocs.io/en/stable/jpms-support.html) |
| 65 | +- [Spring Boot Integration](https://doma.readthedocs.io/en/stable/spring-boot-support.html) |
| 66 | +- [Quarkus Support](https://doma.readthedocs.io/en/stable/quarkus-support.html) |
| 67 | +- [Code Generation](https://doma.readthedocs.io/en/stable/codegen.html) |
| 68 | +- [Frequently Asked Questions](https://doma.readthedocs.io/en/stable/faq.html) |
| 69 | + |
| 70 | +## Resources |
| 71 | + |
| 72 | +- [Main Repository](https://github.com/domaframework/doma) |
| 73 | +- [Release Notes](https://github.com/domaframework/doma/releases) |
| 74 | +- [JavaDoc API Reference](https://www.javadoc.io/doc/org.seasar.doma/doma-core/latest/index.html) |
| 75 | +- [Code Examples](https://github.com/domaframework/simple-examples) |
| 76 | +- [Compile Plugin](https://github.com/domaframework/doma-compile-plugin) |
| 77 | +- [Code Generation Plugin](https://github.com/domaframework/doma-codegen-plugin) |
| 78 | +- [News and Announcements](https://twitter.com/domaframework) |
| 79 | +- [Support Development](https://opencollective.com/doma) |
0 commit comments