문제

다른 애플리케이션이 DB를 수정하지 않는다는 것을 알면 응용 프로그램이 DB에 통합 된 엔티티를 캐시 할 수 있도록 최대 절전 모드 2 레벨 캐시 (EHCACHE를 사용하고 있음)가 가능한지 궁금합니다.

내 생각은 레코드 A를 업데이트하면 레코드 A의 값을 알고 테라코타와 같은 JVM 클러스터 시스템이 JAVA 동기화 잠금을 사용한 JVM 힙 메모리 측면에서 이러한 유형의 동작을 지원하는 캐시를 할 수 있어야한다는 것입니다.

최대 절전 모드의 Ehcache 잠금 모드 구성

도움이 되었습니까?

해결책

최첨단 Pojo 's in Action Book에 대해 이야기합니다.

단일 서버 응용 프로그램이 Persistence Framework를 사용하여 데이터베이스를 업데이트하면 프레임 워크가 프로세스 수준 캐시를 업데이트합니다.

그리고...

업데이트 가능한 캐시 된 객체는 일반적으로 낙관적 잠금을 사용해야합니다. 응용 프로그램이 데이터베이스의 맹목적으로 덮어 쓰는 것을 방해하지 않기 때문입니다. 트랜잭션이 데이터베이스에서 이미 변경된 캐시 된 개체를 업데이트하면 낙관적 잠금 실패로 인해 트랜잭션이 롤백됩니다. 지속성 프레임 워크는 캐시에서 오래된 데이터를 제거하고 응용 프로그램은 최신 버전의 데이터로 트랜잭션을 재 시도 할 수 있습니다.

JPA에 따라 최대 절전 모드 책에 따라 다음 전략 중 하나를 선택하십시오.

  • 트랜잭션 : 관리되는 환경에서만 사용할 수 있으므로 필요한 경우 전체 트랜잭션 격리를 반복 가능한 읽기까지 보장합니다. 업데이트의 드문 경우에 동시 트랜잭션에서 오래된 데이터를 방지하기 위해 중요한 데이터 에이 전략을 사용 하여이 전략을 사용하십시오.
  • Read-Write :이 전략은 타임 스탬핑 메커니즘을 사용하여 읽기 커밋 된 격리를 유지하며 클러스터되지 않은 환경에서만 사용할 수 있습니다. 다시 말하지만,이 전략은 거의 업데이트의 드문 경우 동시 거래에서 오래된 데이터를 방지하기 위해 중요한 데이터를 사용하는 데 사용됩니다.

원래 Anwser에 추가 : Hibernate는 @cache를 사용하든 (usage = cacheconcurrencystrategy.nactomprict_read_write) 캐시와 데이터베이스 간의 일관성을 보장하지 않습니다. 사용하려면 Perfomance에 영향을 줄 수있는 충분히 짧은 만료 시간 초과를 구성해야합니다.

문안 인사,

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top