[SPRING] JPA EntityManager 세션 무효화
SPRINGJPA EntityManager 세션 무효화
내가 작업중인 프로젝트는 Hibernate를 프로 바이더로 Spring 2.5 & JPA를 사용한다.
내 DAO 클래스는 JpaDaoSupport를 확장하므로 getJpaTemplate () 메서드를 사용하여 JpaTemplate을 가져옵니다.
백 엔드 데이터베이스는 내 응용 프로그램 또는 타사 응용 프로그램에서 변경할 수 있습니다.
타사 응용 프로그램이 데이터베이스 (주로 구성 데이터 변경)를 변경하면 응용 프로그램 사용자에게 모든 JPA 세션을 무효화하고 새 데이터를 다시로드 (즉, 백그라운드에서 모든 최대 절전 세션을 무효화) 할 수있는 방법을 제공해야합니다. 이것은 내 응용 프로그램의 모든 동시 사용자가 "보아야"합니다.
어떻게해야합니까?
해결법
-
==============================
1.캐시에는 두 가지 레벨이 있습니다.
캐시에는 두 가지 레벨이 있습니다.
캐싱과 관련된 고급 문제는 다음과 같습니다.
귀하의 질문은 여전히 어떻게 든 일반적이며 답변은 당신이 정확히 무엇을하고 있는지에 달려 있습니다.
저는 많은 업데이트가 최대 절전 모드를 거치지 않고 완료 될 수있는 시스템에서 작업했으며 마지막으로 2 차 캐시를 비활성화했습니다.
그러나 열려있는 모든 세션을 추적하고, 필요한 경우 모든 열린 세션의 모든 1 차 수준 캐시와 2 차 수준 캐시를 제거 할 수도 있습니다. 당신은 여전히 스스로 동기화를 관리 할 필요가 있지만 그것이 가능할 것이라고 상상합니다.
-
==============================
2.아키텍처 관점에서 볼 때 다른 애플리케이션이 모든 비즈니스 로직을 무시하고 영구 데이터를 수정하도록하는 것은 그리 좋은 생각이 아닙니다. 그것은 응용 프로그램의 발 밑에 땅을 많은 방법으로 불안정하게 만듭니다 :)
아키텍처 관점에서 볼 때 다른 애플리케이션이 모든 비즈니스 로직을 무시하고 영구 데이터를 수정하도록하는 것은 그리 좋은 생각이 아닙니다. 그것은 응용 프로그램의 발 밑에 땅을 많은 방법으로 불안정하게 만듭니다 :)
메시지 처리 나 일괄 처리와 같은보다 우아한 방법으로이 다른 시스템과 통합하는 것이 좋은 생각이 아니겠습니까? Spring은 두 가지 모두에 대해 큰 지원을합니다.
from https://stackoverflow.com/questions/2400430/invalidating-jpa-entitymanager-session by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Boot에서 HTTP OPTIONS 요청을 처리하는 방법은 무엇입니까? (0) | 2018.12.19 |
---|---|
[SPRING] 페이징이있는 Spring-Data FETCH JOIN이 작동하지 않습니다. (0) | 2018.12.19 |
[SPRING] Spring MVC에서 PUT과 DELETE 메소드 사용하기 (0) | 2018.12.19 |
[SPRING] XML없이 Spring 4에서 EhCache 사용하기 (0) | 2018.12.19 |
[SPRING] @Scheduled 주석을 사용하여 시작된 예약 된 작업을 중지하는 방법은 무엇입니까? (0) | 2018.12.19 |