jOOQ: The easiest way to write SQL in Java
Learn
Download / Pricing
Blog
All information from this page will be kept strictly confidential
Tell us a little bit about yourself and join our newsletter (examples)
Name
Phone number
Company Name
Anything else you'd like to tell us?
How did you hear from jOOQ?
What made you try jOOQ?
What are your expectations?
Save
No thanks
-->
jOOQ generates Java code from your database and lets you build type safe SQL queries through its fluent API.
Download jOOQ now!
You're using an old browser. While we try to support your browser, some pages may not be rendered appropriately. Please contact us to report any badly rendered pages, so we can improve your experience.
Great Reasons for Using jOOQ
Our customers spend most time on their business-logic.
Because jOOQ takes care of all their Java/SQL infrastructure problems.
Database First
Tired of ORMs driving your database model?
Whether you design a new application or integrate with your legacy,<br>your database holds your most important asset: your data.
jOOQ is SQL-centric. Your database comes "first".
Typesafe SQL
Fed up with detecting SQL syntax errors in production?
SQL is a highly expressive and type safe language with a rich syntax.<br>jOOQ models SQL as an internal DSL and uses the Java compiler to compile<br>your SQL syntax, metadata and data types.
Code Generation
Bored with renaming table and column names in your Java code?
jOOQ generates Java classes from your database metadata.<br>Your Java compiler will tell you when your code is out of<br>sync with your schema.
Active Records
Annoyed by the amount of SQL you write for CRUD?
jOOQ lets you perform CRUD and POJO mapping directly on Active Records, which are also generated from the code generator.
Multi-Tenancy
Worried about multi-schema or shared-schema multi-tenancy?
jOOQ lets you configure database schema and table overrides at runtime<br>and also supports row-level security.
Standardisation
Overwhelmed by the subtle differences in SQL dialects?
jOOQ performs SQL transformation to transform common SQL expressions into<br>your database's closest match. Write SQL that works on all your databases.
Query Lifecycle
Irritated by your ORM's mysterious SQL generation?
jOOQ lets you hook into its SQL generation lifecycle, for logging,<br>transaction handling, ID generation, SQL transformation and much more.
Procedures
Surprised by your ORM's lack of support for stored procedures?
Stored Procedures are an essential feature of modern SQL databases.<br>jOOQ lets you embed stored function calls into your SQL statements.
Database First
Your data is your most important asset.
You have made a well-informed decision, when you chose a relational database<br>management system to store your data. You are used to writing SQL to query and<br>manipulate your data. Now, you're looking for a professional tool to help you<br>write your SQL in Java.
With jOOQ, your database and your data come first. You want to be able to use every<br>feature your database offers, using the language that is used to interact with<br>databases: SQL. jOOQ will let you do precisely that.
More details can be seen in the manual:
jOOQ's mission statement
Different use cases for jOOQ
Typesafe SQL
SQL is a very unique and rich language, optimally designed to express complex<br>queries in a simple, declarative form. When writing SQL, you will focus on<br>what data you want to fetch, not how you want to fetch it.
jOOQ treats SQL like what it is in the first place: A language. Through its unique<br>and modern fluent API design techniques, jOOQ embeds SQL as an internal domain-specific<br>language directly in Java, making it easy for developers to write and read code<br>that almost feels like actual SQL.
As an internal domain-specific language, jOOQ can leverage the powerful Java compiler<br>and Java's generics for
Column type checks
Row value expression type checks
SQL syntax checks
More details can be seen in the manual:
jOOQ's DSL and model APIs
Lexical and logical SQL clause ordering
Code Generation
SQL meta data is an essential part of your code base. It is where you define<br>table and column types, which can be used in your SQL statements in a type safe<br>manner.
During development, SQL meta data are in constant flux.<br>Developers add, rename, remove tables, columns, procedures, parameters all the time.
Using jOOQ's code generator, your Java code will not only compile against your<br>actual SQL meta data, it will also immediately take notice of the<br>changes performed to SQL meta data. This will help prevent syntax errors due to<br>improperly changed meta data in an early phase of your development or deployment<br>cycle.
No more productive surprises due to changed meta data!
More details can be seen in the manual:
Using jOOQ with the code generator
The section about code generation
Active Records
Much of your daily work with SQL is repetitive CRUD: Creating, Reading, Updating,<br>Deleting of database...