jOOQ VS FrameworkBenchmarks

Compare jOOQ vs FrameworkBenchmarks and see what are their differences.

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
jOOQ FrameworkBenchmarks
94 366
5,893 7,384
1.0% 1.2%
9.8 9.8
2 days ago 3 days ago
Java Java
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

jOOQ

Posts with mentions or reviews of jOOQ. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-25.
  • Serious flaws in SQL – Edgar F. Codd (1990)
    2 projects | news.ycombinator.com | 25 Apr 2024
    > 2. ORMs do not hide SQL nastiness.

    This is certainly true!

    I mean: ORMs are now well known to "make the easy queries slightly more easy, while making intermediate queries really hard and complex queries impossible".

    I think the are of ORMs is over. It simply did not deliver.

    If a book on SQL is --say-- 100 pages, a book on Hibernate is 400 pages. So much to learn just to make the easy queries slightly easier to type? Just not worth it.

    I prefer jooq any day over ORMs. And dont get me started over what tools like Hasuna have to offer.

    There are also some languages (forgot the names) that are SQL-done-right. Select in the back, more type safe, more logic, more in the same steps as the query gets executed. These need to be adopted by PG and MySQL and we're good to go. (IMHO)

    https://www.jooq.org/

    https://hasura.io/

  • ORMs are nice but they are the wrong abstraction
    7 projects | news.ycombinator.com | 1 Feb 2024
  • Do jOOQ DAOs support Kotlin Coroutines with R2DBC?
    1 project | /r/jOOQ | 21 Nov 2023
    See: https://github.com/jOOQ/jOOQ/issues/5916
  • Ask HN: What's your experience with stored procedures-heavy systems?
    1 project | news.ycombinator.com | 18 Aug 2023
    I've worked on a few systems that were stored procedure heavy with Microsoft SQL server, not so much because I am a .NET guy, some of these came when I was working on super-random projects for a consulting company.

    My take is that it is a lot like building a system that has an API over the database except that instead of writing in API in, say, Java and exposing it through an http API with, say, JAX-RS, you are writing the API in stored procedures and accessing it through JDBC or ODBC or the native API of the database.

    It seems very possible to build some thin layer that uses metadata to make an http API over stored procedures.

    I'd say that systems like that can work very well.

    The basic challenge is maintaining version control over your scripts, my coworkers were rubyists on my first such project and built a system inspired by migrations in Ruby on Rails where we wrote up and down migration scripts for every database change. I carried that approach to other projects where the people had less discipline to begin with. There is a little awkwardness there that the "down" script that reverts a procedure to a previous version has a cut-and-pasted copy of the old version of the stored procedure, if I had to do it over again I'd make something where each version of a stored proc is in a numbered file and the "migrations" just say "upgrade ABC proc to version 7" or maybe you could make something that looks into the VCS and finds the old version.

    From what I've read, PL/SQL from Oracle looks a lot better than the Transact-SQL language in SQL server but I've never done a major project with Oracle. Most places I've worked at recently use PostgreSQL and I think this would be a viable architecture for that.

    One area where it seems to be a hassle is with the "query builder" pattern, for instance where I work now we have a very complex search form with a huge number of options that builds a SQL query. I think you can do that kind of thing with what they call "Dynamic SQL", see

    https://www.postgresql.org/docs/15/plpgsql-statements.html#P...

    but it seems preferable to do that kind of thing with a real programming language, particularly if you have tools like

    https://www.jooq.org/

  • SQL based language for the SQL impaired?
    1 project | /r/SQL | 10 Jul 2023
    I have a bachelor's in computer science, took a databases class in college (which I did poorly in), and worked as a backend developer for two years, but I always struggled with SQL. I can do the basic SELECT * FROM table WHERE column = 1 but when the SQL statement gets long with lots of joins I couldn't understand it and relied on another programmer for help. When I need to build a website myself I end up going with MongoDB because that allows me to write code instead of writing SQL. That being said, instead of doing all the data processing stuff in the backend, I'd like to try doing as much of it as I can in the database and learn some programmimg language that is SQL-esque (for my next personal project). I know Scala and am very comfortable doing functional programming stuff like List(1,2,3).filter(_.isEven()) to get the even numbers in a list or writing List(1,2,3).reduce(_+_) to apply the addition operation on all the numbers in a list. I know the Big Data framework Apache Spark is written in and works with Scala, but I really want to learn something that works with a traditional database that runs on one centralized server and not have to worry about the distributed computing MapReduce paradigm stuff (also installing the Big Data ecosystem on my personal computer is a pain). Like I want to try building something with a traditional database like Oracle, SQL Server, etc. Something I find really helpful is having IDE code error highlighting and auto-completion and the ability to run a static analysis code quality checker tool, which I can do with Scala code, but I don't know of a way to have those things with traditional SQL Strings sent from the backend to the database. I know of things like Java's JOOQ or C#'s LINQ, but I don't want to use one of those, I want to use something in the database that is database specific and pushes as much data processing as possible into the database. I heard of languages like PL/SQL, T-SQL, and PL/pgSQL to add procedural control to SQL, making it like a real programming language. On Wikipedia I found this list of PL/SQL editors but there are so many choices and I don't know which one to pick (it has to not cost me money and I would love one that has auto-completion with error highlighting and suggestions or maybe some sort of graphical query builder tool that gives me choices of what to put to compose my statement). I saw someone on Reddit say that more recently they added the ability to add database triggers in various programming languages. I also heard mentions online of this thing called "dbt" which adds software engineering tools like version control to SQL, but I don't know if that can help me get around my difficulty with SQL or if it is something I would want to use. Any advice would be appreciated.
  • Spring boot ili asp.net core?
    1 project | /r/programiranje | 1 Jul 2023
    Spring Boot, ili ako bi nesto vise lightweight u Javi Spark + jOOQ
  • Is ORM still an anti-pattern?
    15 projects | news.ycombinator.com | 27 Jun 2023
    > I've been doing ORM on Java since Hibernate was new, and it has always sucked.

    Have you ever looked at something like myBatis? In particular, the XML mappers: https://mybatis.org/mybatis-3/dynamic-sql.html

    Looking back, I actually quite liked it - you had conditionals and ability to build queries dynamically (including snippets, doing loops etc.), while still writing mostly SQL with a bit of XML DSL around it, which didn't suck as much as one might imagine. The only problem was that there was still writing some boilerplate, which I wasn't the biggest fan of.

    Hibernate always felt like walking across a bridge that might collapse at any moment (one eager fetch away from killing the performance, or having some obscure issue related to the entity mappings), however I liked tooling that let you point towards your database and get a local set of entities mapped automatically, even though codegen also used to have some issues occasionally (e.g. date types).

    That said, there's also projects like jOOQ which had a more code centric approach, although I recall it being slightly awkward to use in practice: https://www.jooq.org/ (and the autocomplete killed the performance in some IDEs because of all the possible method signatures)

    More recently, when working on a Java project, I opted for JDBI3, which felt reasonably close to what you're describing, at the expense of not being able to build dynamic queries as easily, as it was with myBatis: https://jdbi.org/

    That said, with the multi-line string support we have in Java now, it was rather pleasant regardless: https://blog.kronis.dev/tutorials/2-4-pidgeot-a-system-for-m...

    I don't think there's a silver bullet out there, everything from lightweight ORMs, to heavy ORMs like Hibernate, or even writing pure SQL has drawbacks. You just have to make the tradeoffs that will see you being successful in your particular project.

  • SQL-Parsing
    2 projects | /r/SQL | 25 Jun 2023
    Have a look at jooq - I know this has been used to rewrite SQL from one dialect to another, so it MUST be capable of collating code activity metrics. Look here. Otherwise, you might want to look into writing your own parser. ANTLR has a T-SQL dialect parser script here.
  • Magnum: A new Scala 3 Database Client
    4 projects | /r/scala | 14 Jun 2023
    Feature requests go here: https://github.com/jOOQ/jOOQ/issues/new/choose. Looking forward!
  • Looking4Library: A GraphQL client that has query methods on the generated types
    3 projects | /r/typescript | 4 Jun 2023
    You may have the fortune of being familiar with the jOOQ library for Java/JVM apps, that can generate domain models based on your database schema, as well as methods on these classes to perform queries. In case you're not, here an example Postgres schema:

FrameworkBenchmarks

Posts with mentions or reviews of FrameworkBenchmarks. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-25.
  • Why choose async/await over threads?
    11 projects | news.ycombinator.com | 25 Mar 2024
    Neat. Thanks for sharing!

    Interestingly, may-minihttp is faring very well in the TechEmpower benchmark [1], for whatever those benchmarks are worth. The code is also surprisingly straightforward [2].

    [1] https://www.techempower.com/benchmarks/

    [2] https://github.com/TechEmpower/FrameworkBenchmarks/blob/mast...

  • Ntex: Powerful, pragmatic, fast framework for composable networking services
    2 projects | news.ycombinator.com | 23 Mar 2024
    ntex was formed after a schism in actix-web and Rust safety/unsafety, with ntex allowing more unsafe code for better performance.

    ntex is at the top of the TechEmpower benchmarks, although those benchmarks are not apples-to-apples since each uses its own tricks: https://www.techempower.com/benchmarks/#hw=ph&test=fortune&s...

  • A decent VS Code and Ruby on Rails setup
    8 projects | news.ycombinator.com | 21 Feb 2024
    Ruby is slow. Very slow. How much you may ask? https://www.techempower.com/benchmarks/#hw=ph&test=fortune&s... fastest Ruby entry is at 272th place. Sure, top entries tend to have questionable benchmark-golfing implementations, but it gives you a good primer on the overhead imposed by Ruby.

    It is also not early 00s anymore, when you pick an interpreted language, you are not getting "better productivity and tooling". In fact, most interpreted languages lag behind other major languages significantly in the form of JS/TS, Python and Ruby suffering from different woes when it comes to package management and publishing. I would say only TS/JS manages to stand apart with being tolerable, and Python sometimes too by a virtue of its popularity and the amount of information out there whenever you need to troubleshoot.

    If you liked Go but felt it being a too verbose to your liking, give .NET a try. I am advocating for it here on HN mostly for fun but it is, in fact, highly underappreciated, considered unsexy and boring while it's anything but after a complete change of trajectory in the last 3-5 years. It is actually the* stack people secretly want but simply don't know about because it is bundled together with Java in the public perception.

    *productive CLI tooling, high performance, works well in a really wide range of workloads from low to high level, by far the best ORM across all languages and back-end framework that is easier to work with than Node.JS while consuming 0.1x resources

  • The Erlang Ecosystem [video]
    1 project | news.ycombinator.com | 8 Jan 2024
    Although that seems to have improved in recent years.

    https://www.techempower.com/benchmarks/#hw=ph&test=json§...

  • Ruby 3.3
    11 projects | news.ycombinator.com | 24 Dec 2023
    RoR and whatever C++ based web backend there is count as a valid comparison in my book. But comparing the languages itself is maybe a bit off.

    On a side note, you can actually compare their performance here if you’re really curious. But take it with a grain of salt since these are synthetic benchmarks.

    https://www.techempower.com/benchmarks

  • API: Go, .NET, Rust
    3 projects | /r/dotnet | 9 Dec 2023
    Most benchmarks you'll find essentially have someone's thumb on the scale (intentionally or unintentionally). Most people won't know the different languages well enough to create comparable implementations and if you let different people create the implementations, cheating happens. The TechEmpower benchmarks aren't bad, but many implementations put their thumb on the scale (https://www.techempower.com/benchmarks). For example, a lot of the Go implementations avoid the GC by pre-allocating/reusing structs or allocate arrays knowing how big they need to be in advance (despite that being against the rules). At some point, it becomes "how many features have you turned off." Some Go http routers (like fasthttp and those built off it like Atreugo and Fiber) aren't actually correct and a lot of people in the Go community discourage their use, but they certainly top the benchmarks. Gin and Echo are usually the ones that are well-respected in the Go community.
  • Rage: Fast web framework compatible with Rails
    12 projects | news.ycombinator.com | 4 Dec 2023
    There is certainly a lot of speculation in Techempower benchmarks and top entries can utilize questionable techniques like simply writing a byte array literal to output stream instead of constructing a response, or (in the past) DB query coalescing to work around inherent limitations of the DB in case of Fortunes or DB quries.

    And yet, the fastest Ruby entry is at 274th place while Rails is at 427th.

    https://www.techempower.com/benchmarks/#hw=ph&test=fortune&s...

  • Node.js – v20.8.1
    2 projects | news.ycombinator.com | 15 Oct 2023
    oh what machine? with how many workers? doing what?

    search for "node" on this page: https://www.techempower.com/benchmarks/#section=data-r21

  • Strong typing, a hill I'm willing to die on
    9 projects | news.ycombinator.com | 4 Oct 2023
    JustJS would like a word https://www.techempower.com/benchmarks/#section=data-r20&tes...
  • Rust vs Go: A Hands-On Comparison
    6 projects | news.ycombinator.com | 27 Sep 2023
    In terms of RPS, this web service is more-or-less the fortunes benchmark in the techempower benchmarks, once the data hits the cache: https://www.techempower.com/benchmarks/#section=data-r21

    Or, at least, they would be after applying optimizations to them.

    In short, both of these would serve more rps than you will likely ever need on even the lowest end virtual machines. The underlying API provider will probably cut you off from querying them before you run out of RPS.

What are some alternatives?

When comparing jOOQ and FrameworkBenchmarks you can also consider the following projects:

Querydsl - Unified Queries for Java

zio-http - A next-generation Scala framework for building scalable, correct, and efficient HTTP clients and servers

JDBI - The Jdbi library provides convenient, idiomatic access to relational databases in Java and other JVM technologies such as Kotlin, Clojure or Scala.

drogon - Drogon: A C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows [Moved to: https://github.com/drogonframework/drogon]

Spring Data JPA - Simplifies the development of creating a JPA-based data access layer.

django-ninja - 💨 Fast, Async-ready, Openapi, type hints based framework for building APIs

HikariCP - 光 HikariCP・A solid, high-performance, JDBC connection pool at last.

LiteNetLib - Lite reliable UDP library for Mono and .NET

Speedment - Speedment is a Stream ORM Java Toolkit and Runtime

C++ REST SDK - The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

sql2o - sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters.

SQLBoiler - Generate a Go ORM tailored to your database schema.