Kri*_*hna 4 spring hibernate jpa transactions
我正在使用Spring 3,JPA + Hibernate作为CMS应用程序.在该应用程序中,我有一个服务类方法,该方法使用@TransactionalAnnotation with rollBackproperty 进行注释.在该方法中,我使用循环将数据(即实体类)插入表中.对于每个iteration循环,实体类必须保存到数据库中.但它没有发生.提交仅在循环执行完成并退出方法时发生.然后它立即提交并保存所有内容.但是,在这种情况下提交之前,我需要在数据插入数据库之前读取数据.我尝试使用ISOLATION LEVEL读取未提交但由于我使用默认值而不支持JPADialect.还尝试添加hibernate实现,jpaDialect但仍然无法正常工作.请帮助解决此问题.还有一件事,是否有任何方法使用传播所需的方法.
Tom*_*icz 15
你说得对,这是I代表在酸.由于事务处于隔离状态,因此其他事务在提交之前无法看到它们.但玩隔离级别是一种不好的做法.我宁愿建议你在内部启动和提交的单独事务中运行每一次迭代.
这在Spring中有点棘手,但这是一个例子:
public void batch() {
for(...) {
insert(...)
}
}
//necessarily in a different class!
@Transactional
public void insert() {
}
Run Code Online (Sandbox Code Playgroud)
请注意,batch()是不是有注解@Transactional,并insert()已在不同的类(春季服务).评论太久了,但这就是生活.如果你不喜欢它,你可以TransactionTemplate手动使用.
| 归档时间: |
|
| 查看次数: |
8904 次 |
| 最近记录: |