1.saveOrUpdate
Teacher teacher = new Teacher();
teacher.setName("赵三");
teacher.setTitle("哈哈哈");
Session session = sf.getCurrentSession();
Transaction t = session.beginTransaction();
session.saveOrUpdate(teacher);
teacher.setName("李四");
session.saveOrUpdate(teacher);
t.commit();
第一次save,第一次update
2.clear:无论是get还是load,都会首先查找缓存(一级缓存),如果没有,才会去数据库中查找,调用clear()方法可以强制清除session缓存。
Session session = sf.getCurrentSession();
Transaction t = session.beginTransaction();
Teacher teacher = (Teacher) session.get(Teacher.class, 1);
System.out.println(teacher.getName());
session.clear();
Teacher teacher2 = (Teacher) session.get(Teacher.class, 1);
System.out.println(teacher2.getName());
t.commit();
没有session.clear();这句,只在执行System.out.println(teacher.getName());的时候执行一次sql查询。
有session.clear();这句,会在System.out.println(teacher.getName());和System.out.println(teacher2.getName());分别执行一次。
load和get的情况一样,只不过执行sql查询的地方不一样。
3.flush:可以强制进行从内存到数据库的同步
Session session = sf.getCurrentSession();
Transaction t = session.beginTransaction();
Teacher teacher = (Teacher) session.get(Teacher.class, 1);
teacher.setName("张三");
session.flush();
teacher.setName("李四");
t.commit();
没有session.flush();这句,只会执行一次update语句。
有session.flush();这句,只会执行两次update语句。