hibernate的优化-事务处理 .(二)

2014-11-24 11:03:44 · 作者: · 浏览: 1
tAdd(){

Session session = HibernateUtil.getSession();

session.beginTransaction();

User u = new User();

u.setName("李四");

u.setBirthday(new Date());

session.save(u);

session.getTransaction().commit();

HibernateUtil.close();

}

@Test

//测试乐观锁;更改数据,版本号会自动加1

publicvoid testupdate(){

Session session = HibernateUtil.getSession();

session.beginTransaction();

User user = (User) session.load(User.class,4);

user.setName("王五");

session.getTransaction().commit();

HibernateUtil.close();

}

@Test

//简单模拟hibernate中的事务;测试通不过,会报错:transaction not successfully started;但是实验显示第二次修改的值会保存到数据库

publicvoid testtransaction(){

Session session1 = HibernateUtil.getSession();

session1.beginTransaction();

User user1 = (User) session1.load(User.class,4);

Session session2 = HibernateUtil.getSession();

session2.beginTransaction();

User user2 = (User) session1.load(User.class,4);

user1.setName("aa");

user2.setName("bb");

session1.getTransaction().commit();

session2.getTransaction().commit();

HibernateUtil.close();

}

@Test

//测试悲观锁,在同一个资源类中做测试的时候一定记得把乐观锁的设置注释掉,尤其是映射文件中的版本标签,这是可以简单做下修改,改为property属性接着做实验

//result:这时的select语句与平时不同,where条件多了一句:where user0_.id= for update

publicvoid find(){

Session session = HibernateUtil.getSession();

session.beginTransaction();

User user = (User) session.load(User.class, 4,LockMode.UPGRADE);

System.out.println(user.getName()+"----"+user.getBirthday());

session.getTransaction().commit();

HibernateUtil.close();

}