免责声明:我是jOOQ的创建者,因此,这个答案有些偏颇。
jOOQ专为您的同事提到的用例而设计。在您的项目中,您不是在执行OLTP(CRUD),而是在执行OLAP,这在许多方面都是jOOQ的很好用例。jOOQ鼓励使用OLAP功能,例如窗口函数,数据透视表,递归查询,存储过程,数组和未嵌套的数组等。jOOQ还支持13种不同的数据库,这些数据库具有您要避免的所有SQL兼容性问题。一些例子:
LIMIT .. OFFSET
/TOP .. START AT
,etc子句如何映射到数据库?- 如何绑定变量(带或不带强制转换)?
- 如何支持内置功能?
- 派生表是否需要用括号括起来?
不过,Hibernate也很好地涵盖了所有这些兼容性方面。因此,您的问题可以归结为:
您是否想使用Hibernate,它不是理想的技术选择,但您知道它并因此可以估计风险?如果团队中的每个人都知道并喜欢Hibernate,并且没有时间学习新事物,这就是方法。
还是您想使用其他更合适的框架,但您不太了解框架,因此无法估算所有风险?如果您是唯一一个支持Hibernate的人,并且有时间学习新框架,那么这可能是一条路。您可能要考虑的其他框架:
- 带有JdbcTemplates的Spring可以与jOOQ结合使用
- myBATIS,可以很好地处理SQL。
或者,您可以混合使用各种技术,并使用Hibernate进行更简单的查询,而将普通SQL / jOOQ / Spring / myBATIS /等等用于更复杂的查询。
还是可以使用存储过程(例如,如果使用Oracle,则在PL / SQL中)处理批量处理和OLAP查询,并让数据库完成工作?如果您的团队中有一名优秀的DBA或数据库专家,这可能是解决方法。
没有正确或错误的答案。但是您将必须做出务实的决定。



