jOOQ 和 JPA
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
仅仅因为您正在使用 jOOQ,并不意味着您必须将其用于一切!
当将 jOOQ 引入到使用 JPA 的现有应用程序中时,常见的问题始终是:“我们应该用 jOOQ 替换 JPA 吗?”以及“我们如何继续这样做?”
请注意,jOOQ 不是 JPA 的替代品。 将 jOOQ 视为补充。 JPA(以及一般的 ORM)试图解决对象图持久性问题。 简而言之,这个问题是关于
- 从数据库加载实体图到客户端内存
- 在客户端操作该图
- 将修改存储回数据库
随着上述图变得更加复杂,会出现许多棘手的问题,例如
- 加载和存储实体的最佳 SQL DML 操作顺序是什么?
- 我们如何更有效地批量处理命令?
- 如何在不影响 ACID 的情况下尽可能降低事务占用空间?
- 我们如何实现乐观锁?
jOOQ 只有一些答案。
虽然 jOOQ 确实提供了有助于运行简单 CRUD 的可更新记录、批量 API、乐观锁功能,但 jOOQ 主要侧重于执行实际的 SQL 语句。
当满足以下任何条件时,SQL 是数据库交互的首选语言
- 您直接在数据库中对大型数据集运行报告和分析
- 您使用 ETL 导入/导出数据
- 您将复杂的业务逻辑作为 SQL 查询运行
每当 SQL 适合时,jOOQ 就适合。 每当您持久化对象图时,JPA 都很适合。 但请注意,从 jOOQ 3.15 开始,您也可以使用 MULTISET_AGG 函数和 MULTISET 值构造函数轻松加载树。
有时,最好将两者结合起来
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!