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();
}