Session常用方法
参考资料: Hibernate缓存机制和四种状态
- save()方法 将一个临时对象转化为持久化对象
- load()方法 VS get()方法
- 都是根据OID从数据库中加载一个持久化对象
- 区别1: 假如数据库中不存在与OID对应的记录,load方法会抛出异常,而get()方法返回null;
- 区别2: load方法默认采用延迟加载策略, get方法采用立即检索策略
- update()方法: 将一个游离对象转化为持久化对象
- saveOrUpdate()方法: 包含save()和 update() 方法
- merge()方法: 合并对象
- 取得两次相同对象时,update 会异常,merge()成功执行
-
1 public void testMerge(){ 2 Session session = sessionFactory.openSession(); //生成一个新的session 3 session.beginTransaction(); //开启事物 4 5 Student stu = (Student) session.get(Student.class, Integer.valueOf(1)); 6 stu.setName("lisi"); 7 8 session.save(stu); 9 10 session.getTransaction().commit(); //提交事务 11 session.close(); //关闭session 12 13 Session session1 = sessionFactory.openSession(); //生成一个新的session 14 session1.beginTransaction(); //开启事物 15 Student stu1 = (Student) session1.get(Student.class, Integer.valueOf(1)); 16 stu.setName("lisi1"); 17 // session1.update(stu); //异常 18 session1.merge(stu); //成功执行 19 20 session1.getTransaction().commit(); //提交事务 21 session1.close(); //关闭session 22 }
- delete()方法: 删除对象