hibernate.order_updates:
Hibernate文档中提到,该配置用于在刷新一级缓存,提交UPDATE的时候,按照每类对象的主键顺序排序后再提交,可以在高并发情况下减少事务死锁的可能。这个配置默认为false,但是非常建议在可能存在高并发情况下开启,因为其实按照类型ID排序(在内存中),并不会消耗过多性能。那么这个配置到底什么含义呢?做个简单的测试。
首先准备一个对象User,完成映射(略),完成下面的测试:
@Before
public void save(){
Session session=sf.openSession();
session.beginTransaction();
for(int i=0;i<10;i++){
User u=new User();
u.setName(Math.random()+"");
session.save(u);
}
session.getTransaction().commit();
session.close();
}
首先任意的保存10个对象,然后模拟高并发修改:
@Test
public void testUpdate() throws Exception{
for(int i=0;i<10;i++){
Thread t=new Thread(new Runnable() {
Random random=new Random();
p