2014-09-24 1 views
0

Hibernate는 2 차 레벨 캐시에서 탈수 형식의 엔티티를 저장합니다. 사용자 정의 사용자 유형이 씬 (특히 Jadira's UserType 라이브러리)에 들어올 때까지 Joda 시간 유형을 맵핑 할 때까지 잘 작동합니다.Hibernate의 2 차 레벨 캐시에서 사용자 정의 사용자 유형의 내부 표현

지속성 각 LocalDate 인스턴스에 대한 참조의 톤을 유지하기 때문에 최대 절전 모드, 어떤 문제가 발생의 2 수준 캐시로 LocalDate 인스턴스에 "원시"(직렬화) 참조를 넣어 그 상자 밖으로 잘 작동하지만 I've discovered 내부 데이터 구조. 캐시에서 나타나지 않아야합니다.

하이버 네이트 (de-) 수화 전략을 사용하여 결국 데이터가 2 차 레벨 캐시에 저장되는 미세 입자 제어가 가능합니까?

답변

2

Jadira의 사용자 유형 라이브러리는 org.hibernate.usertype.UserType을 사용하여 사용자 정의 유형을 구현합니다. UserType 인스턴스는 2 차 레벨 캐시에 넣을 때 간단히 직렬화됩니다. 이는 Joda 시간 인스턴스에 대한 덜 바람직한 선택입니다.

사용자 유형을 구현할 때 org.hibernate.usertype.CompositeUserType을 사용하면 문제가 해결 될 수 있습니다.이 유형을 사용하면 캐시에 넣거나 꺼낼 때 엔티티가 어떻게 수화되지 않아야하는지 완전히 제어 할 수 있습니다.

나는 Jadira와 기능 요청을했지만, 지금은 내 자신의 사용자 정의 유형을 구현하여 앞으로 나아갈 것입니다.

관련 문제