1

关于 JPA 的基于 CriteriaQuery 的查询,我有一个简单的问题要问?我在 Java EE 示例 (http://docs.oracle.com/javaee/6/tutorial/doc/giqsq.html) 中注意到

entityManager.getTransaction().begin()

entityManager.getTransaction().commit()

不使用。

结果,这些操作在进行查询时是否由 CriteriaQuery 隐式处理?

4

2 回答 2

2

如果您只使用没有 EJB 的 JPA,那么您需要像自己一样控制事务,这意味着编写 transation().begin()、commit() 等。但是您使用 JPA 和 EJB 就像 oracle 的教程一样,您不需要在方法中编写 transation().begin()、commit() 等。

于 2012-08-15T04:25:11.087 回答
2

Criteria 对事务没有任何作用,普通的 JPQL 查询或命名查询也没有。事务是单独控制的,您可以将操作(例如查询)作为事务性或非事务性执行。显然,Java EE 通常会为您启用事务,而在 Java SE 中,您必须自己放置它们——但这与您使用的任何查询机制是分开的。

于 2012-08-15T05:29:34.237 回答