4

내 최대 절전 모드 프로젝트에서 두 번째 수준의 캐시를 사용하고 싶지만 최대 절전 모드의 두 번째 수준 캐시에 대해 조금 알고 있습니다. 이건 내 코드에서 어떤 구성과 .jar 파일이 필요한가요? 이러한 내있는 hibernate.cfg.xml 파일최대 절전 모드 두 번째 수준 캐시 << net.sf.ehcache.hibernate.EhCacheProvider >>

<property name="hibernate.cache.use_query_cache">true</property> 
    <property name="hibernate.cache.use_second_level_cache">true</property> 
    <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property> 

와 내가 다른 구성을 변경 갈까요 알고 싶어이 jar 파일 ehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar 을 추가로 설정 내가 설정?

내 프로젝트에서 2 차 수준 캐시를 사용하는 것을 어떻게 알 수 있습니까? 다만이 설정을 넣으면

이를 사용하여 자동으로 최대 절전 모드 또는 나는 (어떤 주석 또는 뭔가처럼) 내 된 .java 클래스에 개미 다른 코드를 사용해야합니다

답변

5

찾고있는 특수 효과는 org.hibernate.annotations.Cache입니다. 기본 사용법은 다음과 같습니다 쿼리의

@Entity 
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public MyEntity { 
    ... 

    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
    public List<ElementType> getSomeCollection() { 
    ... 
    } 
} 

, 당신은 참으로 hibernate.cache.use_query_cache 속성을 설정하여 enable query cache 필요가 있고 해당 쿼리가 선언 (명명 된 쿼리의 경우) 또는 조회 인스턴스에 setCacheable(true)를 호출하여 캐시 할 지정합니다.

모두 당신이 캐싱에 신중해야하고 정말로 당신이하고있는 일을 알면 그렇지 않으면 도움이되지 않을 것입니다. "빠른 수정"으로 보지 마십시오. 예를 들어, 모든 캐싱은 입니다. 확실히 할 일이 잘못되었습니다.

+0

1- Shoud 나는 모든 Entity 클래스보다 @Cache를 정의하고 있습니까? 내 프로젝트에서 2 차 레벨 캐시를 사용하고자 할 때 또는 일부 특정 Entity 클래스에서 @Cache를 설정할 수 있습니까? 2 사용하는 second_level_cache 구현의 주석 구문이 다르지 않습니까? (나는 net.sf.ehcache.hibernate.EhCacheProvider를 사용합니다.) – Am1rr3zA

+1

1) 모든 엔티티를 캐시 가능하게해서는 안됩니다. 캐싱에 가장 적합한 후보는 자주 읽지 만 자주 변경하지 않고 너무 많이 갖고 있지 않은 엔티티입니다. Hibernate의 SQL 로그를 활성화한다. "SELECT * FROM my_entity_table WHERE ID =?" 쿼리는 가장 자주 실행되며, 엔티티 캐싱의 후보가 될 수 있습니다. 2) 구현은 속성을 통해 구성됩니다 (이전처럼). 어노테이션은 사용하는 구현에 관계없이 동일합니다. 그러나 일부 구현은 일부 캐시 전략을 지원하지 않을 수 있습니다. 내 대답에 게시 된 링크는 모든 구현 기능을 나열합니다. – ChssPly76

+0

쿼리 캐시에 대한 최신 문서는 다음과 같습니다. [Hibernate 4.3] (http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch20.html#performance-querycache-regions) –

4

두 번째 수준 및 쿼리 캐시를 사용할 수 있도록합니다 설정 프로젝트에서 사용하기는하지만 특정 엔터티, 컬렉션 및 쿼리에 대해이 기능을 활성화해야합니다. 이해해야 할 절충안이 있기 때문에 신중한 계획이 필요합니다. 일반적으로 2 차 및 쿼리 캐시는 읽기 전용 또는 읽기 대부분의 데이터에는 적합하지만 휘발성 데이터에는 적합하지 않습니다. 이미 소유하고 있지 않은 경우 Java Persistence with Hibernate 사본을 가져 오는 것이 좋습니다. 그것은 주제에 대한 대단한 치료법을 가지고 있습니다.

+0

대답은 Tanx이지만 빠른 정보가 더 필요합니다. – Am1rr3zA