Cache Mybatis_day4_Mybatis

  • Como a maioria das estruturas de persistência, o Mybatis também fornece uma estratégia de cache, que reduz o número de consultas ao banco de dados e melhora o desempenho.
  • O cache no Mybatis é dividido em cache de primeiro nível e cache de segundo nível.

Cache de primeiro nível Mybatis

  • O cache de primeiro nível é o cache do intervalo SqlSession. Quando os métodos de modificar, adicionar, excluir, confirmar (), fechar (), liberar () e outros métodos do SqlSession são chamados, o cache de primeiro nível será limpo.
    Insira a descrição da imagem aqui
  1. Na primeira vez em que consultar as informações do usuário com o ID do usuário 1, localize primeiro se há informações do usuário com o ID 1 no cache; caso contrário, consulte as informações do usuário no banco de dados.

  2. Obtenha informações do usuário e armazene-as no cache principal.

  3. Se o sqlSession executar uma operação de confirmação (executar inserir, atualizar, excluir), limpe o cache de primeiro nível no SqlSession.O objetivo é permitir que o cache armazene as informações mais recentes e evite leituras sujas.

  4. Na segunda vez para iniciar uma consulta de informações do usuário com o ID do usuário 1, primeiro verifique se há informações do usuário com o ID 1. No cache, se houver, obtenha informações do usuário diretamente do cache.


Cache secundário de Mybatis

  • O cache de segundo nível é um cache no nível do mapeador.Várias SqlSessions operam na mesma instrução SQL mapeada pelo mesmo Mapeador.Múltiplas SqlSessions podem compartilhar o cache de segundo nível.O cache do segundo nível é através de SqlSessions.

  • Diagrama de estrutura do cache secundário:
    Insira a descrição da imagem aqui

  1. Primeiro, abra o cache secundário do mybatis. O sqlSession1 consulta as informações do usuário e as informações do usuário armazenam os dados da consulta no cache secundário.

  2. Se o SqlSession3 executar o SQL no mesmo mapa do mapeador e confirmar, os dados na área de cache de segundo nível no mapa do mapeador serão limpos.

  3. O sqlSession2, para consultar as mesmas informações do usuário que o sqlSession1, irá primeiro ao cache para descobrir se há dados, se houver dados diretamente do cache.

  • Nota: Os dados armazenados no cache de segundo nível não são um objeto; portanto, os User findById(int id);valores de endereço dos dois objetos Usuário retornados duas vezes são diferentes.

Ativar e desativar o cache de segundo nível

  1. Etapa 1: Abra o cache de segundo nível no arquivo SqlMapConfig.xml
<settings>
<!-- 开启二级缓存的支持 -->
	<setting name="cacheEnabled" value="true"/>
</settings>
  • Como o valor de cacheEnabled é verdadeiro por padrão, essa etapa pode ser omitida sem configuração. True significa abrir o cache do segundo nível; false para desativar o cache do segundo nível.

  1. Etapa 2: configurar o arquivo de mapeamento do mapeador relacionado
<mapper namespace="cn.myp666.dao.IUserDao">
<!-- 开启二级缓存的支持 -->
	<cache></cache>
</mapper>
  • <cache>O rótulo indica que o mapa atual do mapeador usará o cache de segundo nível, e o padrão distinto depende do valor do espaço para nome do mapeador.

  1. Etapa 3: configurar o atributo useCache na instrução
<!-- 根据 id 查询 -->
<select id="findById" resultType="user" parameterType="int" useCache="true">
	select * from user where id = #{uid}
</select>
  • Defina useCache = ”true” na tag no arquivo de mapeamento UserDao.xml para indicar que a instrução atual é usar o cache de segundo nível.Se não for usado, poderá ser definido como false
  • Nota: Para cada consulta que requer o sql de dados mais recente, useCache = false deve ser configurado para desativar o cache secundário.


Considerações para cache L2

  • Quando usamos o cache secundário, a classe em cache deve implementar java.io.Serializablea interface, de modo que você pode usar para salvar o objeto de serialização.
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
}
Publicado 94 artigos originais · elogiado 0 · visitas 2097

Acho que você gosta

Origin blog.csdn.net/qq_16836791/article/details/104802119
Recomendado
Clasificación