JPA CriteriaQuery需要begin()和commit()吗?

时间:2012-08-14 20:47:18

标签: java java-ee jpa commit criteriaquery

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

entityManager.getTransaction().begin()

entityManager.getTransaction().commit()

未使用。

因此,在进行查询时,CriteriaQuery是否隐式处理这些操作?

2 个答案:

答案 0 :(得分:2)

如果你只使用没有EJB的JPA,那么你需要自己控制事务,这意味着写transation()。begin(),commit()等。但是你正在使用带有EJB的JPA作为oracle的教程,你不需要在你的方法中编写transation()。begin(),commit()等。

答案 1 :(得分:2)

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