ybatis L2 캐시 이해
1 레벨 캐시에 비해 2 레벨 캐시의 범위가 좀 더 넓어져서 여러 개의 SqlSession에 의해 공용될 수 있다.
마찬가지로 같은 조회 sql를 보내면 캐시에서 찾고 데이터베이스에서 찾을 수 없습니다.
모든namespace의 마퍼는 캐시 공간이 있습니다.
만약 두 마퍼의namespace가 같다면, 마퍼가 조회한 데이터는 같은 2단계 캐시에 저장됩니다.
마찬가지로 sqlSession이commit을 실행하면 2단계 캐시를 비웁니다.
구성 파일(구성 없이 기본 설정):
sqlMapConfig.xml에서:
<setting name="cacheEnabled" value="true"/>
상응하는 마퍼에서.xml에서:<cache/>
2 레벨 캐시가 필요하지 않으면 2 레벨 캐시 해제 설정
<select useCache="false"></select>
이렇게 매번 데이터베이스에서 읽습니다.insert, update, delete를 실행하면 캐시를 새로 고칩니다. 캐시를 비울 수 있습니다.
일반적으로 설정하지 않으면, 설정은 더러운 읽기를 초래할 수 있다.
<insert 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(UserMapper.class);
UserMapper mapper3 = session3.getMapper(UserMapper.class);
// , id 1
User user1 = mapper1.findUserById(1);
System.out.println(user1);
//close
session1.close();
// ,UserMapper
user1.setUsername("mmm");
mapper3.updateUser(user1);
session3.commit();
//
User user2 = mapper2.findUserById(1);
System.out.println(user2);
session2.close();
2단계 캐시를 하려면 Serilizable 인터페이스를 사용해야 합니다. 이 캐시 데이터가 하드디스크나 다른 곳에 반서열될 수 있기 때문입니다.위에서 말한 것은 편집자가 여러분께 소개한 Mybatis 2급 캐시입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Mybatis가 키 id를 삽입하는 방법을 되돌려줍니다.mapper의 xml 파일에useGeneratedKeys 구성 KeyProperty를 사용하여 Id로 돌아가면 됩니다. PS: Mybatis의 insert에서 키 ID를 반환하는 방법 1、XyzMapper.xml 또...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.