Hibernate中的多个事务

Ham*_*zeh 4 java hibernate

是否有多次在一个会话上调用beginTransaction的风险?我的意思是例如:

session.beginTransaction();
session.saveOrUpdate(object1);
// .... some works
session.beginTransaction();
session.delete(object2);
// ... some other works
session.getTransaction.commit();
Run Code Online (Sandbox Code Playgroud)


我这样做了,似乎没有问题(任何异常或警告).事实上,我想知道当我以这种方式使用事务时会发生什么.

Boz*_*zho 7

javadocs中给出解释

beginTransaction()开始一个工作单元并返回关联的Transaction对象.如果需要新的基础事务,则开始事务.否则,在现有基础事务的上下文中继续新工作.返回的Transaction对象的类由属性hibernate.transaction_factory确定.

所以 - 它没有效果,它继续使用现有的交易.所以不要这样做,因为它可能会混淆读者(包括你).如果提交第一个事务然后启动第二个事务,则可以有多个事务.