mybatis 2 caché

Original: https: //blog.csdn.net/qq_38274974/article/details/100898145

mybatis caché en una caché, caché L2
, entonces, ¿por qué debemos utilizar el caché que?
       Y no cambian a menudo para los datos solicitados con frecuencia, si cada consulta debe interactuar con la base de datos, lo que reduce considerablemente la eficiencia, por lo que aquí se introduce un caché, algunos poco ya menudo afecta a los resultados de los datos de consulta almacenados en la memoria, reduciendo así la interacción con la base de datos para mejorar la eficiencia, esto es la ventaja de la memoria caché.

Caché
       La memoria caché es la memoria caché de nivel SqlSession (soporte de cache por defecto, no es necesario configurar un perfil de caché), cuando el funcionamiento de la base de datos, cada instancia de una clase de objeto SqlSession una estructura de datos (HashMap ) se puede utilizar para almacenar datos de memoria caché, la memoria caché diferente de la instancia del área de datos SqlSession clase de objeto (el HashMap) es que no interactúan. Al realizar las mismas dos sentencias SQL en el mismo SqlSession se terminó en primer lugar va a escribir datos en la memoria, la segunda consulta no se ejecuta SQL directamente desde la memoria.

público  de clase MyBatisTest {
     // caché mybatis es SqlSession caché de nivel, solamente un objeto SqlSession. 
    @Test
     pública  vacío test1 () {
        SqlSessionFactory ssf = MyBatisUtil.getFactory ();
        Sesión SqlSession = ssf.openSession ();
        UserMapper UM1 = session.getMapper (UserMapper. Clase );
        Usuario usuario1 = um1.selectbyid ( 1 );
        . El Sistema OUT .println (user1.getUsername ());
         // session.clearCache (); // borrar la memoria caché
         // Session.commit (); // analógica CRUD 
        UserMapper UM2 = session.getMapper (. UserMapper clase );
        Usuario usuario2 = um2.selectbyid ( 1 );
        Sistema. fuera .println (user2.getUsername ());
        session.close ();
    }
}

resultados:

 

 

 

Por lo tanto, debido a que el caché, sólo ocurrió una vez para interactuar con la base de datos

Cómo borrar la memoria caché?

Método A: ABM analógico

session.commit ();

Segundo método: Call clearCache () método

session.clearCache ();

 

 

 Y después de borrar la memoria caché:

Secundaria caché
       caché secundaria es un asignador de memoria caché de nivel, a una pluralidad de operar comunicado SqlSession misma Mapper SQL, una pluralidad de caché secundario puede ser compartida SqlSession, caché secundaria a través de la SqlSession. Para acceder a la petición de consulta de usuario múltiple y los resultados de la consulta menos exigentes en tiempo real, este tiempo puede utilizar el mybatis caché secundaria.

 

 1. Inicio
de añadir el archivo de configuración del núcleo en SqlMapConfig.xml

<Parámetros>
    <setting name = " cacheEnabled " value = " verdad " />
</ Settings>

2. Llame a la clase de entidad de interfaz implementar serialización

 

 

Objeto de implementar la interfaz de serialización:
     · Para los datos obtenidos para la ejecución de deserialización
     · Interfaz marcador, hacer un símbolo indica un número de funciones, pueden existir otras llamadas a objetos funcionales
     tienen Métodos y número de serie, el objeto puede ser serializado en un archivo binario, puede ser un archivo binario deserializado en un objeto
3. Agregar etiquetas de caché en el correspondiente mapper.xml

 

 

4. Prueba

@Test
     pública  vacío test2 () {
     // el mybatis caché secundaria es asignador de memoria caché de nivel, hay una pluralidad de objetos SqlSession. 
        SSF = a SqlSessionFactory MyBatisUtil.getFactory ();
        SqlSession session1 = ssf.openSession ();
        SqlSession reunión2 = ssf.openSession ();
        SqlSession sesiones3 = ssf.openSession ();
        UserMapper UM1 = session1.getMapper (UserMapper. Clase );
        Usuario usuario1 = um1.selectbyid ( 1 );
        Sistema. fuera .println (user1.getUsername ());
        session1.close ();
        
        UserMapper um2 = session2.getMapper (UserMapper. Clase );
        Usuario usuario2 = um2.selectbyid ( 1 );
        Sistema. fuera .println (user2.getUsername ());
        session2.close ();
        
        UserMapper um3 = session3.getMapper (UserMapper. Clase );
        Usuario usuario3 = um3.selectbyid ( 1 );
        Sistema. fuera .println (user3.getUsername ());
        session3.close ();
    }

El resultado:

 

Supongo que te gusta

Origin www.cnblogs.com/lvchengda/p/12598103.html
Recomendado
Clasificación