사용자 도구

사이트 도구


java:hibernate:cache

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:hibernate:cache [2015/10/17 12:17]
kwon37xi [Cache 관련 Properties]
java:hibernate:cache [2018/09/13 14:28] (현재)
kwon37xi
줄 30: 줄 30:
     * ''get'' : 캐시에서 읽어서 있으면 반환 한다.     * ''get'' : 캐시에서 읽어서 있으면 반환 한다.
   * 최초 데이터 가져온 후 캐시 생성   * 최초 데이터 가져온 후 캐시 생성
-    * ''putFromLoad'' : minimalPutOverride == true일 경우에는 이미 캐시에 값이 존재하면 현재 것을 버린다. 아니면 항상 값을 캐시에 쓴다. 캐시에 썼으면 ''return true;'' 아니면 ''return false;''. ''putFromLoad''는 데이터는 가져왔으나 캐시가 없었을 때 호출되는 것인데, 그 사이에 다른 쓰레드에서 캐시에 데이터를 썼다면 굳이 다시 쓸 필요는 없다.+    * ''putFromLoad''​ : minimalPutOverride == true일 경우에는 이미 캐시에 값이 존재하면 현재 것을 버린다. 아니면 항상 값을 캐시에 쓴다. 캐시에 썼으면 ''return true;''​ 아니면 ''return false;''. ''putFromLoad''는 데이터는 가져왔으나 캐시가 없었을 때 호출되는 것인데, 그 사이에 다른 쓰레드에서 캐시에 데이터를 썼다면 굳이 다시 쓸 필요는 없다.
   * 입력 : ''insert/afterInsert'' : 객체를 persist해도 호출하지 않음. 즉, persist시 캐싱 불가. ''return false;''   * 입력 : ''insert/afterInsert'' : 객체를 persist해도 호출하지 않음. 즉, persist시 캐싱 불가. ''return false;''
   * 수정 - 예외를 발생시켜야 한다.   * 수정 - 예외를 발생시켜야 한다.
줄 222: 줄 222:
   * ''org.hibernate.cacheMode'' Override the cache mode for this query ( eg. CacheMode.REFRESH ) - [[https://docs.jboss.org/hibernate/orm/4.2/javadocs/org/hibernate/CacheMode.html|CacheMode]]   * ''org.hibernate.cacheMode'' Override the cache mode for this query ( eg. CacheMode.REFRESH ) - [[https://docs.jboss.org/hibernate/orm/4.2/javadocs/org/hibernate/CacheMode.html|CacheMode]]
   * ''org.hibernate.cacheRegion'' Cache region of this query ( eg. new String("regionName") )   * ''org.hibernate.cacheRegion'' Cache region of this query ( eg. new String("regionName") )
 +
 +===== Query 실행 후 Entity Cache 갱신 문제 =====
 +  * PK 기반 쿼리는 Cache에서 (있으면) 값을 가져오고, 쿼리 실행 후 필요하면 Cache에 값을 설정한다.
 +  * 하지만 Query 실행시에는 (Query Cache 가 꺼져 있으면) 쿼리 결과 Entity들을 다시 Cache에 넣는 일을 한다(''putFromLoad'').
 +  * ''minimalPutOverride=true''가 이를 방지하는 역할을 한다. 캐시 구현체가 ''minimalPutOverride''를 구현하지 않았을 수도 있다.
 +  * 하지만 ''minimalPutOverride''를 켜지 않았을 경우에는 ''org.hibernate.cacheMode=CacheMode.GET'' 혹은 그 외 값으로 통해 해당 쿼리에 대한 캐시 사용을 꺼버린다.
 +  * 
  
 ===== 참조문서 ===== ===== 참조문서 =====
줄 231: 줄 238:
   * [[http://www.javabeat.net/introduction-to-hibernate-caching/|What is Hibernate Caching?]] : 동시성 전략에 대해 자세히 설명   * [[http://www.javabeat.net/introduction-to-hibernate-caching/|What is Hibernate Caching?]] : 동시성 전략에 대해 자세히 설명
   * [[http://learningviacode.blogspot.in/2013/08/cachemodes-in-hibernate.html|Learning the code way: CacheModes in Hibernate]]   * [[http://learningviacode.blogspot.in/2013/08/cachemodes-in-hibernate.html|Learning the code way: CacheModes in Hibernate]]
 +  * [[http://blogs.innovationm.com/spring-hibernate-with-ehcache/|Spring Hibernate With EhCache | InnovationM Blog]]
 +  * [[https://www.baeldung.com/hibernate-second-level-cache|Hibernate Second Level Cache]]
java/hibernate/cache.1445053652.txt.gz · 마지막으로 수정됨: 2015/10/17 12:17 저자 kwon37xi