Hibernate——flush()方法強制同步資料庫
阿新 • • 發佈:2019-01-22
@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語句。