java 在休眠状态下持续后启动事务

cld4siwp  于 2023-06-20  发布在  Java
关注(0)|答案(1)|浏览(76)

我是JPA和Hibernate的新手。我昨晚测试了它的事务管理,注意到了一些东西。我能够持久化实体,即使我在调用save方法后启动了事务,而且如果我不提交事务,它也不会持久化。我对hibernate事务的工作流程非常困惑。下面是代码片段:

Session session = sessionFactory.openSession();
 transaction = session.beginTransaction();
 firstUser  = createUser("aaa@aa.com", "a", "yyy", true);
 session.save(firstUser);
 session.beginTransaction().commit();

我希望它不会被保存或抛出异常,因为我在开始事务之前保存了条目。

o2g1uqev

o2g1uqev1#

我希望它不会被保存或抛出异常,因为我在开始事务之前保存了条目。
您通过第一次调用beginTransaction启动了一个新事务。然后保存了实体。然后你又调用了beginTransaction。这将返回当前事务,而不启动新事务。然后您提交了事务,实体被持久化了。
它的工作原理和Javadoc中描述的一样:https://docs. jboss. org/hibernate/orm/6.0/javadocs/org/hibernate/SharedSessionContract. html #beginTransaction()

相关问题