This week, Timo Westkämper from QueryDSL has announced feature completeness on the QueryDSL user group, along with his call for contributions and increased focus on bugfixes and documentation.
Timo and us, we have always been in close contact, observing each other’s products. In the beginning of jOOQ in 2009, QueryDSL was ahead of us.
But we learned quickly and removed all of our shortcomings such that jOOQ and QueryDSL were quickly at eye level by 2011. Ever since, we have been taking inspiration from one another, as in the end, we have had similar goals. Today, whenever someone is looking for a querying DSL, people tend to recommend either of our tools:
QueryDSL is often a good choice in JPA-based environments, while jOOQ is mostly the best choice in SQL-based environments, although jOOQ has already been given some credit in JPA-based environments as well:
Anyway, today, we’d like to congratulate Timo to his new job, and to QueryDSL’s feature completeness.
jOOQ, on the other hand, is far from feature complete.
jOOQ is what SQLJ should have been from the beginning.
We’re only at the beginning. Java and SQL are the two platforms that are used by most of the developers on this planet. According to db-engines.com, almost every popular DBMS is a SQL-based relational DBMS. According to TIOBE, Java currently ranks #2 among all languages.
We strongly believe that all of these developers are in dire need for better SQL integration into the Java language. While ORMs and JPA are very well integrated, SQL is not, and that is what we are working on. jOOQ will be feature complete when the Java compiler can natively compile actual SQL code and SQL code fragments into jOOQ, which will serve as its backing AST model for further SQL transformation.
Until we reach that goal, we’ll be adding support for more SQL goodness. A small selection of things that we already support, beyond QueryDSL’s “feature completeness”:
- Table-valued functions
- PIVOT tables
- DDL (with jOOQ 3.4)
- MERGE statement
- Derived tables and derived column lists
- Row value expressions
- Flashback query
- Window functions
- Ordered aggregate functions
- Common table expressions (with jOOQ 3.4)
- Object-oriented PL/SQL
- User-defined types
- Hierarchical SQL
- Custom SQL transformation
- 16 supported RDBMS (even MS Access!)
- … you name it
Our roadmap is full of great ideas. There’s plenty of work, so let’s get going! Join us, your partner for…
The referenced blog post didn’t announce general Querydsl feature completeness, but for certain modules. I see the JPA module as being more or less feature complete and the MongoDB module quite close.
The Querydsl SQL module is not feature complete and many of the listed features are already in our backlog.
Hi Timo,
I’m sorry, I’ve missed that subtlety. I’ve read general feature completeness from this sentence:
Hi Lukas.
Yes, might have been too subtle. I will clear that also in my original post via a comment.
Timo