최대 절전 모드로 구동되는 Java SE 응용 프로그램을 빌드 중입니다. 주로 많은 Java SE 인스턴스가 실행되며 많은 Hibernate Session 팩토리가 있습니다. 한 클라이언트 컴퓨터가 데이터 소스에 개체를 삽입하면 다른 클라이언트는 캐시를 지우지 않으면 해당 클라이언트를 볼 수 없습니다. 이 경우에 사용할 수있는 더 나은 메커니즘이 있습니까? 다음은 캐시 지우기 방법입니다.Java SE 응용 프로그램에서 Hibernate 동시성 문제
public static void clearCache() {
HibernateHelper.beginTranscation();
HibernateHelper.getCurrentSession().clear();
HibernateHelper.getSessionFactory().evictQueries();
try {
Map<String, ClassMetadata> classesMetadata = HibernateHelper
.getSessionFactory().getAllClassMetadata();
for (String entityName : classesMetadata.keySet()) {
HibernateHelper.getSessionFactory().evictEntity(entityName);
}
} catch (Exception e) {
}
HibernateHelper.commit();
}
제 2 수준 캐시 (Memcache)와 쿼리 캐시도 사용하고 있습니다.
2 차 캐시 (L2) 캐시를 사용하고 있습니까? – Santosh
네 ... Memcache를 사용하고 있습니다. – Chan
은 각각의 클라이언트가 동일한 memcache 서버를 사용하고 있거나 개별 memcache를 가지고 있습니까? – Santosh