2009-12-01 4 views
1

** 1 차 ** 수준의 캐시는 제한 시간 만 설정할 수 있지만 엔티티의 새로 고침/지우기 캐시는 강제로 실행할 수 없습니까? 또는 putthing annotation @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 자동 새로 고침/캐시를 지울 때마다 saveorupdate/mergeupdate를 수행 하시겠습니까? hibernateTemplate.flush()과 관련된 것은 무엇입니까?2 차 수준 최대 절전 모드 캐시 이해


2. 모든 엔티티에 대해 2 차 캐시를 사용하는 것이 좋습니까? 모든 엔터티를 캐시 할 때 너무 긴 캐싱 시간을 원하지 않는다면이 경우에 대해 ehcache에 사용하는 평균 시간 제한은 무엇입니까?

답변

1

1) 필요한 경우 2 차 수준 캐시에서 엔티티를 수동으로 제거 할 수 있습니다. SessionFactory에는이 목적을위한 몇 가지 방법이 있습니다. 어떤 것은 엔티티 (또는 콜렉션)의 단일 인스턴스를 제거합니다. 다른 사람은 모든 주어진 클래스의 엔티티 (또는 지정된 엔티티 이름/역할 이름)를 제거합니다.

즉, 은 보통 일 필요가 없습니다. Hibernate는 SQL 업데이트와 같은 특정 작업을 수행하지 않는 한 캐시가 업데이트되도록합니다.이 경우 사용자의 질문을 명확히합니다.

2) 일반적으로 - 아니오, 캐시하기에 좋지 않습니다. 모든 엔티티. 일반적으로로드/업데이트가 거의없는 개체는 물론 불변 개체도 캐시하는 것이 좋습니다. 당신은 그들의 톤이 없다고 가정합니다. 그러나 다시, 그것은 정말로 당신이하고있는 것에 달려 있습니다.

시간 초과는 캐시 크기/상태를 적당하게 유지하지 않으려는 경우 버팀목 (또는 안전 장치)입니다. 좋은 캐싱 전략은 그것에 의존해서는 안됩니다.