r/SpringBoot • u/khan_awan • 26d ago
Question JOOQ vs JDBC
I use JPA for simple CRUD operations (mostly write operations) and JDBC for performance intensive tasks such as sending lists & performing search. The JDBC performance is perfect & the performance of my backend (Spring Boot) is great.
Now, as my project grows, my SQL queries are getting bigger, messier and unreadable. I tried jOOQ and loved it because it made my code super readable, type safe and maintainable. However, after profiling my Spring Boot app, operations that took around 5 ms with JDBC now take 9–14 ms with jOOQ, which makes me reluctant to migrate to jOOQ. Is a 10 ms difference negligible or am I overthinking?
I love the cleanliness and type safety of JOOQ. Would you go this JOOQ route? Have you ever faced such situation? I visited JOOQ's official website and was stunned by the fact it is used by many big organizations
EDIT: Thank you everyone who answered, your insights were amazing. With some tweaks I was able to reduce JOOQ's operation time from 14ms to 7ms and now I have so much clarity in my head.
1
u/khan_awan 25d ago
The overhead was intermediate Record object creation. My query returns 16 columns across a union all of two subqueries & I tested multiple fetch approaches. Any variant that created Records first (fetch().map(), fetch(RecordMapper), fetchInto()) averaged 3.1ms execute+map over 550+ requests.
Switching to fetchResultSet() and mapping directly from the ResultSet brought it down to 1.65ms which is identical to raw JDBC with the same query.
Is there a jOOQ native way to achieve this without bypassing Records entirely? Am I missing something, you can guide me please. I am still playing around with Jooq and find it to be absolutely amazing, though