【问题标题】:Are begin() and commit() required for JPA CriteriaQuery?JPA CriteriaQuery 需要 begin() 和 commit() 吗?
【发布时间】:2012-08-11 05:27:21
【问题描述】:

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

entityManager.getTransaction().begin()

entityManager.getTransaction().commit()

没有使用。

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

【问题讨论】:

    标签: java jakarta-ee jpa commit criteriaquery


    【解决方案1】:

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

    【讨论】:

    • 有趣。我如何知道我是否在使用 EJB?我正在使用 Netbeans J2EE 包中的 JPA。不确定这是否是默认设置。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2015-06-24
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多