Java实战之02Hibernate-06处理并发
十三、处理并发 1 、事务的隔离级别 不考虑隔离级别出现的问题: 脏读:一个线程中的事务读到了另外一个线程中未提交的数据。 不可重复读:一个线程中的事务读到了另外一个线程中提交的 update (更新)的数据。 虚读:一个线程中的事务读到了另外一个线程中提交的 insert (插入)的数据。 事务的隔离级别: 1 : READ UNCOMMITTED: 脏读、不可重复读、虚读(幻读)都可能发生。 2 : READ COMMITTED: 避免脏读;不可重复读、虚读(幻读)都可能发生。 4 : REPEATABLE READ: 避免脏读、不可重复读,虚读(幻读)可能发生。 8 : SERIALIZABLE: 避免脏读、不可重复读、虚读(幻读)。 通过配置参数 hibernate.connection.isolation=1|2|4|8 进行设置。 MySQL :默认 4 Oracle :默认 2 2 、第二类更新丢失 1 //线程1 2 @Test 3 public void test1(){ 4 Session s = HibernateUtil.getSession(); 5 Transaction tx = s.beginTransaction(); 7 Customer c1 = s.get(Customer.class, 1); 8 c1.setName("泰斯特"); 9