Available in versions: Dev (3.20) | Latest (3.19) | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11 | 3.10

This documentation is for the unreleased development version of jOOQ. Click on the above version links to get this documentation for a supported version of jOOQ.

Code generation

Applies to ✅ Open Source Edition   ✅ Express Edition   ✅ Professional Edition   ✅ Enterprise Edition

While optional, source code generation is one of jOOQ's main assets if you wish to increase developer productivity. jOOQ's code generator takes your database schema and reverse-engineers it into a set of Java classes modelling tables, records, sequences, POJOs, DAOs, stored procedures, user-defined types and many more.

The essential ideas behind source code generation are these:

  • Increased IDE support: Type your Java code directly against your database schema, with all type information available
  • Type-safety: When your database schema changes, your generated code will change as well. Removing columns will lead to compilation errors, which you can detect early.

The following chapters will show how to configure the code generator and how to generate various artefacts.

Table of contents

5.1.
Configuration and setup of the generator
5.2.
Advanced generator configuration
5.2.1.
Logging
5.2.2.
Error handling
5.2.3.
Jdbc
5.2.4.
Generator
5.2.5.
Database
5.2.5.1.
Database name and properties
5.2.5.2.
Inline database implementation
5.2.5.3.
RegexFlags
5.2.5.4.
Includes and Excludes
5.2.5.5.
Include object types
5.2.5.6.
Record Version and Timestamp Fields
5.2.5.7.
Comments
5.2.5.8.
Synthetic objects
5.2.5.8.1.
Synthetic columns
5.2.5.8.2.
Synthetic readonly columns
5.2.5.8.3.
Synthetic readonly ROWIDs
5.2.5.8.4.
Synthetic identities
5.2.5.8.5.
Synthetic defaults (new)
5.2.5.8.6.
Synthetic enums
5.2.5.8.7.
Synthetic primary keys
5.2.5.8.8.
Synthetic unique keys
5.2.5.8.9.
Synthetic foreign keys
5.2.5.8.10.
Synthetic synonyms (new)
5.2.5.9.
Date as timestamp
5.2.5.10.
Ignore procedure return values (deprecated)
5.2.5.11.
Hidden columns (new)
5.2.5.12.
Readonly columns
5.2.5.13.
Unsigned types
5.2.5.14.
Catalog and schema mapping
5.2.5.15.
Catalog and schema version providers
5.2.5.16.
Custom ordering of generated code
5.2.5.17.
Forced types
5.2.5.17.1.
Matching of forced types
5.2.5.17.2.
Data type rewriting
5.2.5.17.3.
Qualified converters
5.2.5.17.4.
Inline converters
5.2.5.17.5.
Lambda converters
5.2.5.17.6.
Auto converters
5.2.5.17.7.
Enum converters
5.2.5.17.8.
Jackson converters
5.2.5.17.9.
JAXB converters
5.2.5.17.10.
Data type bindings
5.2.5.17.11.
Client side computed columns
5.2.5.17.12.
Audit columns
5.2.5.17.13.
Hidden columns (new)
5.2.5.17.14.
Visibility Modifier (per forced type)
5.2.5.18.
Table valued functions
5.2.6.
Generate
5.2.6.1.
Annotations
5.2.6.2.
Covariant overrides
5.2.6.2.1.
Overriding as()
5.2.6.2.2.
Overriding rename()
5.2.6.2.3.
Overriding where()
5.2.6.3.
Default catalog and schema
5.2.6.4.
Extended types
5.2.6.5.
Fluent setters
5.2.6.6.
Fully Qualified Types
5.2.6.7.
Global Artefacts
5.2.6.8.
Global object names
5.2.6.9.
Implicit JOIN paths
5.2.6.10.
Java Time Types
5.2.6.11.
Serial Version UID
5.2.6.12.
Sources
5.2.6.13.
Text blocks
5.2.6.14.
Visibility Modifier (global)
5.2.6.15.
Whitespace (newlines and indentation)
5.2.6.16.
Zero Scale Decimal Types
5.2.7.
Output target configuration
5.3.
Custom code generation dependencies
5.4.
Programmatic generator configuration
5.5.
Custom generator strategies
5.6.
Matcher strategies
5.6.1.
MatcherRule
5.6.2.
Matching catalogs
5.6.3.
Matching schemas
5.6.4.
Matching tables
5.6.5.
Matching fields
5.6.6.
Matching indexes
5.6.7.
Matching primary keys
5.6.8.
Matching unique keys
5.6.9.
Matching foreign keys
5.6.10.
Matching routines
5.6.11.
Matching sequences
5.6.12.
Matching enums
5.6.13.
Matching embeddables
5.6.14.
Matching UDTs
5.6.15.
Matching attributes
5.6.16.
Matcher examples
5.7.
Custom code sections
5.8.
Generated global artefacts
5.9.
Generated tables
5.10.
Generated records
5.11.
Generated POJOs
5.12.
Generated Interfaces
5.13.
Generated DAOs
5.14.
Generated sequences
5.15.
Generated synonyms (new)
5.16.
Generated procedures
5.17.
Generated domains
5.18.
Generated UDTs
5.19.
Data type extensions
5.19.1.
PostgreSQL extensions
5.20.
Embeddable types
5.20.1.
Configuration
5.20.2.
Overlapping embeddable types
5.20.3.
Field replacement
5.20.4.
Embedded keys
5.20.5.
Embedded domains
5.21.
Mapping generated catalogs and schemas
5.22.
Code generation for large schemas
5.23.
Code generation and version control
5.24.
JPADatabase: Code generation from entities
5.25.
XMLDatabase: Code generation from XML files
5.26.
DDLDatabase: Code generation from SQL files
5.27.
LiquibaseDatabase: Code generation from Liquibase XML, YAML, JSON files
5.28.
XMLGenerator: Generating XML
5.29.
KotlinGenerator
5.30.
ScalaGenerator and Scala3Generator
5.31.
Running the code generator with Maven
5.32.
Running the code generator with Ant
5.33.
Running the code generator with Gradle
5.33.1.
Multiple executions
5.33.2.
Compiler dependency
5.33.3.
Data change management
5.34.
System properties governing code generation
5.35.
In-memory compilation of programmatic configuration
5.36.
Features requiring generated code

previous : next

Feedback

Do you have any feedback about this page? We'd love to hear it!

The jOOQ Logo