>Java >java지도 시간 >Java의 MyBatis 프레임워크에서 XML 매핑 캐시를 사용하는 방법에 대한 튜토리얼

Java의 MyBatis 프레임워크에서 XML 매핑 캐시를 사용하는 방법에 대한 튜토리얼

高洛峰
高洛峰원래의
2017-01-23 11:41:261344검색

MyBatis에는 매우 쉽게 구성하고 사용자 정의할 수 있는 매우 강력한 쿼리 캐싱 기능이 포함되어 있습니다. 기본적으로 캐싱은 활성화되어 있지 않습니다. 보조 캐싱을 활성화하려면 SQL 매핑 파일에 다음 줄을 추가해야 합니다.

으아악

말 그대로 그렇습니다. 이 간단한 문장의 효과는 다음과 같습니다.
1. 매핑 문 파일의 모든 select 문이 캐시됩니다.
2. 매핑 문 파일의 모든 삽입, 업데이트 및 삭제 문은 캐시를 새로 고칩니다.
3. 캐시는 LRU(Least Recent Used) 알고리즘을 사용하여 복구합니다.
4. 일정(예: 플러시 간격 없음, 새로 고침 간격 없음)에 따라 캐시는 시간 순서에 따라 새로 고쳐지지 않습니다.
5. 캐시는 목록 컬렉션 또는 개체에 대한 1024개의 참조를 저장합니다(쿼리 메서드가 반환하는 내용에 관계 없음).
6. 캐시는 읽기/쓰기 캐시로 간주됩니다. 즉, 개체 검색은 공유되지 않으며 다른 호출자나 스레드의 잠재적인 변경을 방해하지 않고 호출자가 안전하게 수정할 수 있습니다.

이러한 속성은 모두 캐시 요소의 속성을 통해 수정할 수 있습니다. 예를 들어:

으아악

이 고급 구성은 결과 객체 또는 목록에 대한 512개의 참조를 저장하는 60초마다 플러시되는 FIFO 캐시를 생성하며, 반환된 객체는 읽기 전용으로 간주되므로 다른 스레드의 호출자 간에 수정되어 충돌을 일으킬 수 있습니다.
사용 가능한 퇴거 전략(퇴거)은 다음과 같습니다.

LRU – Least Recent Used: 가장 오랫동안 사용되지 않은 개체를 제거합니다.

FIFO – 선입선출: 캐시에 들어가는 순서대로 객체를 제거합니다.

SOFT – 소프트 참조: 가비지 수집기 상태 및 소프트 참조 규칙을 기반으로 개체를 제거합니다.

WEAK – 약한 참조: 가비지 수집기 상태 및 약한 참조 규칙을 기반으로 객체를 보다 적극적으로 제거합니다.

기본값은 LRU입니다.

flashInterval은 임의의 양의 정수로 설정할 수 있으며 합리적인 시간(밀리초)을 나타냅니다. 기본값은 설정되어 있지 않습니다. 즉, 새로 고침 간격이 없으며 명령문이 호출될 때만 캐시가 새로 고쳐집니다.
크기(참조 수)는 캐시하는 개체 수와 환경에서 사용 가능한 메모리 리소스 양을 염두에 두고 임의의 양의 정수로 설정할 수 있습니다. 기본값은 1024입니다.
readOnly 속성은 true 또는 false로 설정할 수 있습니다. 읽기 전용 캐시는 캐시된 개체의 동일한 인스턴스를 모든 호출자에게 반환합니다. 따라서 이러한 개체는 수정할 수 없습니다. 이는 중요한 성능 이점을 제공합니다. 읽기-쓰기 캐시는 (직렬화를 통해) 캐시된 객체의 복사본을 반환합니다. 속도는 느리지만 안전하므로 기본값은 false입니다.

사용자 정의 캐싱 사용
캐싱을 사용자 정의하는 이러한 방법 외에도 자체 캐시를 구현하거나 다른 타사 캐싱 솔루션용 어댑터를 생성하여 캐싱 동작을 완전히 재정의할 수도 있습니다.

으아악

이 예에서는 사용자 정의 캐시 구현을 사용하는 방법을 보여줍니다. type 속성으로 지정된 클래스는 org.mybatis.cache.Cache 인터페이스를 구현해야 합니다. 이 인터페이스는 MyBatis 프레임워크의 많은 복잡한 인터페이스 중 하나이지만, 단순히 그것이 무엇을 하는지 알려주십시오.

으아악

참조 캐시
어쩌면 미래의 어느 시점에서는 네임스페이스 전체에 걸쳐 동일한 캐시 구성과 인스턴스를 공유하고 싶을 수도 있습니다. 이 경우 캐시-ref 요소를 사용하여 다른 캐시를 참조할 수 있습니다.​

으아악

Java의 MyBatis 프레임워크에서 XML 매핑 캐시 사용에 대한 더 많은 튜토리얼을 보려면 PHP 중국어 웹사이트에 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.