Hibernate——flush()方法强制同步数据库

来源:互联网 发布:上海市相对湿度数据 编辑:程序博客网 时间:2024/06/05 00:46
@Testpublic 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之后只会更新最后的一次改动。


@Testpublic 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语句。