【发布时间】:2020-12-20 12:24:27
【问题描述】:
假设我同时使用 Hibernate (JPA) 和 jOOQ 来实现数据持久性。
我想通过 EntityManager 打开事务来做一些工作。
然后我使用 jOOQ 在我用 EntityManager 打开的同一个事务中选择和更新几个表,然后我提交或回滚上述所有操作。
我不使用 Spring 或任何其他容器事务管理器。
try {
entityManager.getTransaction().begin();
//do JPA stuff here fetch from FB update entity
DLSConext - want to use JOOQ DSL for crud operation
em.getTransaction().commit()
} catch (Exception e) {
em.getTransaction().rollback(); //All Hibernate and jooq operation should rool back
}
编辑 那么我该怎么做呢? 例如,我使用 jOOQ 进行一些更新,然后我希望 Hibernate 找到一个实体,但我还希望 Hibernate 在获取实体之前看到 jOOQ 完成的几行更新。
【问题讨论】:
-
您可能需要检查 stackoverflow.com/questions/3493495/… 。我仍然建议你不要走这条路。混合使用 JPA/ORM 和原始 SQL./JDBC 对您的缓存(会话本身、L2 缓存、查询缓存)不利,并且会导致非常难以调试的问题,除非您确定您没有在“后面”操作/刷新数据JPA/Hibernate 的背面”,这在你做的时候很难证明,而且在未来的演变中也更难强制执行。
-
你的问题是什么?
-
我编辑了我的问题