可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

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 值构造函数轻松加载树。

有时,最好将两者结合起来

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo