이전 기사는 MyBatis Level 1 캐시를 소개합니다. 도움이 필요한 친구들이 그것을 언급 할 수 있습니다.
첫 번째 레벨 캐시와 비교할 때, 두 번째 레벨 캐시는 더 큰 범위를 가지며 여러 sqlsessions에서 공유 할 수 있습니다.
동일한 쿼리를 보내면 SQL이 먼저 캐시에서 검색 한 다음 데이터베이스를 찾을 수없는 경우 쿼리합니다.
각 네임 스페이스 매퍼에는 자체 캐시 공간이 있습니다.
두 매퍼의 네임 스페이스가 동일하면 맵퍼를 실행하여 쿼리 된 데이터는 동일한 레벨 2 캐시에 저장됩니다.
마찬가지로 SQLSESSION이 실행되고 커밋이 실행되면 보조 캐시가 지워집니다.
구성 파일 (구성없이 기본적으로 활성화) :
sqlmapconfig.xml에서 :
<설정 이름 = "Cacheenabled"value = "true"/>
해당 Mapper.xml에서 :
<cache/>
보조 캐시가 필요하지 않으면 설정에서 보조 캐시를 비활성화 할 수 있습니다.
<usecache = "false"> </select>를 선택하십시오
이것은 매번 데이터베이스에서 읽습니다
삽입, 업데이트, 삭제를 실행 한 후 캐시가 새로 고침됩니다 (캐시를 지우기).
일반적으로 설정되지 않으면 설정하면 더러운 판독 값이 발생할 수 있습니다.
<flushcache = "false"> </insert> 삽입>
작은 예 :
sqlsession session1 = factory.opensession (); sqlsession session2 = factory.opensession (); sqlsession session3 = factory.opensession (); usermapper mapper1 = session1.getMapper (usermapper.class); usermapper mapper2 = session2.getMapper (usermpper.class); usermapper mapper3 = session3.getMapper (usermpper.class); // 첫 번째 요청은 id 1 사용자 1 = mapper1.finduserByid (1)로 사용자를 쿼리하는 것입니다. System.out.println (user1); // 쓰기 데이터를 보조 캐시 세션 1.close ()에 닫습니다. // 보조 캐시를 지우고, user1.setusername ( "mmm"); mapper3.updateuser (user1); session3.commit (); // 두 번째 쿼리는 사용자 user2 = mapper2.finduserByid (1)를 찾습니다. System.out.println (user2); session2.close ();
레벨 2에서 캐시 할 객체는이 캐시 된 데이터가 하드 디스크 또는 다른 곳에 사로화되어 기록 될 수 있으므로 일련의 인터페이스를 구현해야합니다.
위는 편집자가 소개 한 Mybatis Level 2 캐시입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!