jOOQ effectively combines complex SQL, typesafety, source code generation, active records, stored procedures, UDTs, and Java in a fluent API.
Supported DBs are DB2, HSQLDB, MySQL, Oracle, Derby, Ingres, H2, Postgres, SQLite, SQL Server, Sybase.
How does jOOQ help you?
· Your database always comes FIRST! That's where the real schema is, not in Java code or some XML mapping file, whose syntax you're not familiar with.
· You keep your code DRY.
· You won't suffer from the Object-relational impedance mismatch.
· You won't have syntax errors in your query.
· You won't forget to bind variables correctly. No SQL injection, either.
· You don't need to know your database schema by heart when you develop. The schema is generated in Java. You can use auto-completion in your IDE!
· You don't need to create value objects for your data. Use the generated artifacts instead.
· You have automatic type mapping between SQL data types and Java types.
· You change something in the database? Your Java code won't compile. You don't need to wait until runtime to notice.
· You can forget about JDBC (especially useful when dealing with UDTs, ARRAYs and stored procedures).
· You can port your SQL to a new database. jOOQ will generate SQL that works on any database.
Here are some key features of "jOOQ":
· Object Oriented SQL Modelling
· SQL code generation
· OR-Mapping
· Typesafe SQL
· Stored procedure and UDT support
· ActiveRecords
Requirements:
· Java 1.6 or later
What's New in This Release: [ read full changelog ]
· SELECT statements
· INSERT and MERGE statements: the VALUES() clause
· UPDATE statements: SET A = (SELECT...)
· UPDATE statements with row value expressions: SET (A, B) = (SELECT...)
· Quantified comparison predicates: ANY(SELECT...) and ALL(SELECT...)
· Comparison predicates: = (SELECT...)
· IN predicates: IN (SELECT...)
· BETWEEN predicates: BETWEEN (SELECT...) AND (SELECT...)
· Generated records
· The new VALUES() constructor
· Scala integration for conversion of jOOQ Record[N] to Scala's Tuple[N]
· Factory has been split into DSL (static QueryPart construction) and
· DSLContext (Query execution, "attached" QueryPart construction). This greatly
· improves the overall DSL experience while allowing for more fine-grained
· Executor lifecycle control.
· A ConnectionProvider has been introduced as an abstraction of the JDBC
· Connection lifecycle. The standalone Connection and pooled DataSource modes
· are still supported, but you can now inject your own ConnectionProvider for
· more control.
· A lot of performance improve...