2012-10-10 4 views
2

내 응용 프로그램에서 최대 절전 모드로 ehcache를 사용하고 있습니다.최대 절전 모드 및 ehcache

나는으로 Ehcache를 사용하여 캐시 할 수 있어요 그러나 나는 이런 식으로 뭔가를 달성하기 위해 노력하고 있어요 :

  1. 내가 자주 단지 처음에 내 응용 프로그램에서 사용하는 데이터베이스 테이블을 캐시합니다.

  2. 테이블을 캐싱 한 후 어떻게 hql 쿼리에서 사용할 수 있습니까? 내 hql 쿼리에서 나는 각각의 db 테이블에 Pojo 클래스 이름을 사용한다. 이 경우 어떻게하면 hql 쿼리를 사용할 수 있습니까?

위의 문서 또는 지원을 제공해주십시오.

답변

1

The documentation of ehcache explains this in detail.

기본적으로 @Cache 주석을 사용하여 Hibernate에 캐시 할 액세스 유형을 알릴 수 있습니다.

ehcache 구성에서 엔티티마다 하나의 캐시를 구성 할 수 있습니다. 클래스 이름이 키입니다. 이를 통해 엔티티 당 캐시 할 요소의 수를 정의 할 수 있습니다.

하이버 네이트가 쿼리를 캐시하게하려면 hibernate.cache.use_query_cachetrue으로 설정하십시오. 당신이 HQL을 사용할 때 Hibernate는 "올바른 일을 할 것이다".

[편집]

어떻게 내가 주요 캐시?

Hibernate가 어떤 쿼리를 위해 필요할 때 캐시에 있도록 객체를로드 할 수 있습니다.

그러나 캐싱은 매우 복잡한 주제입니다. 캐시 사용을 허용하고 금지하는 많은 요소가 있습니다. 단순한 사례가있는 경우 캐싱은 "효과가 있으며"아무 것도 할 필요가 없습니다. 복잡한 HQL을 가지고 있다면, 어떤 일이 일어날 수 있습니다. where 절의 값에 따라 동일한 쿼리에서 100ms 또는 10 초가 걸릴 수있는 예제를 보았습니다. 캐싱이 모든 것을 느리게 만드는 코드를 보았습니다. 나는 Hibernate 세션에서 기본 커넥션을 요청한 코드를 보았고 Hibernate가 단순히이 법안에 맞지 않았기 때문에 모든 것을 스스로했다.

일반적인 방법은 가능한 한 간단하게 코드를 작성하고 잠시 동안 프로덕션에서 결과를 실행하는 것입니다. 시간이 지나면 사용자는 너무 느린 장소에 대해 불평하기 시작할 것입니다. 그런 다음 몇 군데를 최적화 할 수 있습니다. 이렇게하면 사용자가 신경 쓰지 않는 코드에 시간을 낭비하지 않아도됩니다.

+0

감사합니다. Aaron Digulla .... 실제로이 모든 것을 설정했습니다. 내 쿼리를 캐싱 할 수 있습니다. 제 질문은 쿼리하기 전에 응용 프로그램에서 50 개의 테이블을 사용한다고 가정합니다. 내 테이블 (서버 쪽 캐싱) 내 데이터베이스에 캐시에서 모든 테이블을 넣고 쿼리 또는 아무것도 캐시 된 버전을 사용할 수 있습니다. 나는 이것을 어떻게 얻을 수 있을까 ?? – Srishti123

+0

아니면 그냥 다음과 같이 지적 할 수 있습니다. 배포 할 때 내 응용 프로그램에서 사용할 모든 데이터베이스 테이블을 캐시하고 싶습니다.이를 수행하는 방법. ?? ehcache이 경우에 나를 도울까요 ?? – Srishti123