关于JPA基于CriteriaQuery的查询,我有一个简单的问题要问?我在Java EE示例(http://docs.oracle.com/javaee/6/tutorial/doc/giqsq.html)中注意到
entityManager.getTransaction().begin()
和
entityManager.getTransaction().commit()
未使用。
因此,在进行查询时,CriteriaQuery是否隐式处理这些操作?
答案 0 :(得分:2)
如果你只使用没有EJB的JPA,那么你需要自己控制事务,这意味着写transation()。begin(),commit()等。但是你正在使用带有EJB的JPA作为oracle的教程,你不需要在你的方法中编写transation()。begin(),commit()等。
答案 1 :(得分:2)
Criteria对事务没有任何作用,普通的JPQL查询或命名查询也没有。事务是单独控制的,您可以执行操作(例如查询)作为事务或非事务。显然,Java EE通常会为您启用事务,而在Java SE中您必须自己添加它们 - 但这与您使用的任何查询机制都是分开的。