java在Hibernate中执行条件查询后,是否需要提交/关闭会话?
我有一个如下代码:
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相反)不需要主动事务管理
# 1 楼答案
>;我在JPA中听说,CriteriaQuery(与Criteria相反)不需要主动事务管理
没错
如果您将代码更改为标准JPA,则在事务中不会强制运行任何查询,前提是您正在选择实体(并且没有插入/更新/删除),并且没有对查询设置锁定模式
如果这是所需的JPQL:
标准JPA标准查询代码为:
它有点难看,但它是强类型的(JPQL不是),标准的,面向对象的,在初始化时编译,因此速度很快。 :-)