티스토리 뷰

세션에는 항상 "첫 번째 수준"캐시가 있으므로 하나의 세션을 사용하는 경우이를 통해 읽은 모든 내용이 캐시됩니다. Hibernate는 데이터베이스에 대해 쿼리를 실행하지만 개체를 ​​빌드 할 때 새 개체를 빌드하지 않도록 세션 캐시를 확인하므로 데이터베이스에서 변경된 열은 새로 고쳐지지 않습니다. 닫고 새 세션을 얻으면 다음 쿼리에서 데이터베이스에서 전체 개체를 읽습니다.

-------------------

"뒤로 돌아가는"프로세스가있을 때 Hibernate가 캐시 된 객체의 "더티"상태를 적절하게 관리하기를 기대할 수 없습니다. 주석을 사용하는 경우 상태 (필드 이름 인 경우)를 @Transient로 표시하여 Hibernate가 매번 데이터베이스에서이 값을 가져와야한다는 것을 알도록 제안합니다.

-------------------

캐싱을 활성화하고 만료 시간을 설정하려고 할 수 있습니다. 그런 다음 Hibernate는 캐시가 만료되고 누군가 요청하면 데이터베이스에서 데이터를 새로 고칩니다.

나는 때때로 데이터베이스를 조정하면서 이것을 홈 프로젝트에서 사용합니다. 그런 다음 잠시 기다렸다가 페이지를 새로 고치고 조정 된 데이터를 확인합니다.

Hibernate 내에서 ehcache를 살펴보십시오.

-------------------

버전 관리 Hibernate Version을 사용할 수 있습니다 . 외부 프로세스는 버전 번호 (또는 타임 스탬프)를 증가시켜 Hibernate에게 새 버전이 사용 가능함을 알려야합니다.

이는 반드시 즉각적인 변경은 아니지만 컨테이너를 다시 시작하는 것보다 더 자주 발생합니다 (이 경우에는 몇 분마다).

몇 가지 단점이 있습니다.

  • 응용 프로그램이 오래된 데이터로 잠시 작동 할 수 있습니다.
  • 배치 작업에 의해 버전이 증가하고 최대 절전 모드에서 업데이트 된 이전 버전 레코드를 저장하려고하면 예외가 발생합니다.
  • 공유 데이터베이스는 확장 성이 떨어집니다. 잦은 검사는 비용 대비 성능을 제공합니다.

나는 결코 Hibernate 전문가는 아니지만 가능합니다.



출처
https://stackoverflow.com/questions/180013
댓글
공지사항
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31