【发布时间】:2012-10-12 16:32:00
【问题描述】:
我的代码如下所示:
Session session = MySessionFactory.createSession();
session.beginTransaction();
Criteria cq = session.createCriteria(clazz);
// Do stuff.
List list = cq.list();
session.getTransaction().commit();
session.close();
我真的需要 beginTransaction()、commit() 和 close() 吗?
我听说在 JPA 中,CriteriaQuery(相对于 Criteria)不需要主动事务管理。
【问题讨论】:
-
根据Hibernate documentation,事务绝不是可选的。您应该在事务中完成所有工作并在最后提交。
-
谢谢。当我看到所有这些带有不显示代码会话部分的 Criteria 示例时,我感到很困惑。
-
这可能是因为该部分是标准样板并且是隐含的。
-
@SomeNewbie:使用 Spring 及其声明式会话和事务管理,您将永远不必打开和关闭会话,以及显式地开始和结束事务。
-
@SomeNewbie:选择其中任何一个,但一定要使用允许声明式事务和会话管理的东西。
标签: java hibernate session orm criteria