chen4765654

Spring+Hibernate(JPA)防止脏数据自动提交

Hibernate的脏检查(dirty checking)。每次装载一个对象到内存时,session始终跟踪它的修改。于是每次对数据的查询,session都将跌代所有的session中的对象并检查脏数据,将脏数据flush到数据库。
方法1:
将事务设置为只读,然后手工flush。
@Transactional(rollbackFor = RuntimeException.class,readOnly=true)
public void save(TestEmployee entity) {
entitymanager.persist(entity);
entitymanager.flush();
}
方法2:
在一个session中读取、查询大量数据对象情况下的制胜武器- FlushMode.NEVER。当然要记住,在此过程中你不可以修改这些数据,不然就真的把数据“搞脏”了。
使用武器秘诀如下:
FlushMode previous = session.getFlushMode();
session.flush(); // who know's what been done till now
session.setFlushMode(FlushMode.NEVER);
// Do some querying
// Do some more querying
// Really load up that session
// Execute a few more queries
// Write back to some tables
session.flush();
session.setFlushMode(previous);

posted on 2014-09-07 11:13 紫色心情 阅读(3320) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航: