@Test
public void testFlush() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Student s = (Student)session.load(Student.class, 2);
s.setName("ss");
s.setName("ssss");
session.getTransaction().commit();
}
在persistent状态更新两次字段,可以看到只发了一次update语句。因为在缓存中的更新只有commit之后才会同步到数据库。所以缓存中不管改几次,commit之后只会更新最后的一次改动。
@Test
public void testFlush() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Student s = (Student)session.load(Student.class, 2);
s.setName("ss");
session.flush();
s.setName("ssss");
session.getTransaction().commit();
}
flush()方法的作用就是强制把缓存中的内容同步到数据库,所以当我们在两次更新之间加入flush()方法后,s.setName("ss")也存入了数据库,所以后台出现了两次update语句。