ybatis L2 캐시 이해

1924 단어 mybatis캐시
위의 글은 여러분께 소개했습니다mybatis 레벨 캐시. 필요한 친구가 있으면 참고하시기 바랍니다.
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급 캐시입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기