session.clear ()와session.flush의 차이
1105 단어 flush와 get의 차이
session.flush () 방법은session 캐시에 있는 실체 대상과 데이터베이스 기록을 동기화하고 데이터의 일치성을 유지합니다.
@Test
public void testSessionClear(){
Session session = sessionFactory.openSession();
session.beginTransaction();
Teacher t = (Teacher) session.get(Teacher.class, 3);
System.out.println(t.getName());
session.clear();// clear sql , clear 2
Teacher t2 = (Teacher) session.get(Teacher.class, 3);
System.out.println(t2.getName());
session.getTransaction().commit();
}
세션이 호출되지 않았다면.clear()는 1급 캐시가 존재하기 때문에 같은 기록을 조회하면 sql문장만 보냅니다.세션 캐시를 비우면, 여기에서 2개의 ql 문장을 보냅니다.
@Test
public void testFlush()
{
Session session = sessionFactory.openSession();
session.beginTransaction();
Teacher t = (Teacher) session.get(Teacher.class, 3);
t.setName("xiu");
session.flush();// flush 2 UPDAE,
t.setName("aty");
session.getTransaction().commit();
}
flush를 실행하지 않으면 업데이트 문장만 보냅니다.flush를 실행하면 두 개의 업데이트 문장을 보냅니다. 즉 flush는 데이터베이스 데이터와 동기화를 강제로 합니다.