1. 程式人生 > >Hibernate——flush()方法強制同步資料庫

Hibernate——flush()方法強制同步資料庫

@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語句。