jOOQ is the most obvious contender. Since I use Java I like type safety, jOOQ gives me that (like Hibernate) without trying to abstract the fact that I make queries to a db (which Hibernate does).
jOOQ and JPA doesn't solve the same problem.
That's why JOOQ is superior.
It depends on what you want to do.
Complex queries with multiple joins? jOOQ.
Persist changes to complex aggregate models with multiple layers of child entities? JPA/Hibernate.
> Doctor, it hurts when I do this. Then don't do that