문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:hibernate:cache [2014/07/02 00:09] kwon37xi [Cuncurrency Strategy] |
java:hibernate:cache [2018/09/13 14:28] (현재) kwon37xi |
||
|---|---|---|---|
| 줄 6: | 줄 6: | ||
| * Memcached임에도 Region(namespace) 지원 | * Memcached임에도 Region(namespace) 지원 | ||
| * [[https:// | * [[https:// | ||
| + | |||
| + | ===== Hibernate의 기본 캐시 전략 ===== | ||
| + | * Memcached 등의 외부 서버보다는 로컬 JVM에서 값을 즉시 읽을 수 있는 [[java: | ||
| + | * [[http:// | ||
| + | * 기본적으로 Replication-Invalidation 전략을 사용한다. | ||
| + | * [[java: | ||
| + | * Entity와 컬렉션은 '' | ||
| + | * '' | ||
| + | * '' | ||
| ===== Cuncurrency Strategy ===== | ===== Cuncurrency Strategy ===== | ||
| 줄 21: | 줄 30: | ||
| * '' | * '' | ||
| * 최초 데이터 가져온 후 캐시 생성 | * 최초 데이터 가져온 후 캐시 생성 | ||
| - | * '' | + | * '' |
| * 입력 : '' | * 입력 : '' | ||
| * 수정 - 예외를 발생시켜야 한다. | * 수정 - 예외를 발생시켜야 한다. | ||
| 줄 140: | 줄 149: | ||
| ===== Entity Collection Cache ===== | ===== Entity Collection Cache ===== | ||
| + | ==== 기본 ==== | ||
| + | |||
| 엔티티의 컬렉션을 캐시하려면 해당 컬렉션에 '' | 엔티티의 컬렉션을 캐시하려면 해당 컬렉션에 '' | ||
| <code java> | <code java> | ||
| 줄 149: | 줄 160: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | 양방향 관계의 경우 **명시적으로 Collection 쪽에 수정이 발생**해야만 캐시가 갱신된다. | ||
| + | |||
| + | ==== OneToOne not owning size ==== | ||
| + | * OneToOne 관계의 not owning side(mappedBy를 명시한 부모측)에는 캐시가 걸리지 않는 것으로 보인다.[[https:// | ||
| 줄 159: | 줄 175: | ||
| TypedQuery< | TypedQuery< | ||
| query.setParameter(" | query.setParameter(" | ||
| - | |||
| query.setHint(" | query.setHint(" | ||
| + | query.setHint(" | ||
| query.setHint(" | query.setHint(" | ||
| </ | </ | ||
| 줄 191: | 줄 207: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ===== Evict All ===== | ||
| + | 현재 Hibernate는 모든 리젼(Region)을 '' | ||
| + | <code java> | ||
| + | org.hibernate.Cache cache = sessionFactory.getCache(); | ||
| + | cache.evictEntityRegions(); | ||
| + | cache.evictQueryRegions(); | ||
| + | cache.evictDefaultQueryRegion(); | ||
| + | cache.evictCollectionRegions(); | ||
| + | </ | ||
| + | |||
| + | ===== Cache 관련 Properties ===== | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ===== Query 실행 후 Entity Cache 갱신 문제 ===== | ||
| + | * PK 기반 쿼리는 Cache에서 (있으면) 값을 가져오고, | ||
| + | * 하지만 Query 실행시에는 (Query Cache 가 꺼져 있으면) 쿼리 결과 Entity들을 다시 Cache에 넣는 일을 한다('' | ||
| + | * '' | ||
| + | * 하지만 '' | ||
| + | * | ||
| + | |||
| ===== 참조문서 ===== | ===== 참조문서 ===== | ||
| * [[http:// | * [[http:// | ||
| 줄 198: | 줄 237: | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||