Cómo escribir un método de prueba para sqlsessiontemplate
SqlSessionFactoryBuilder: el método de compilación se usa para crear instancias de SqlSessionFactory.
SqlSessionFactory: Una fábrica que crea instancias de SqlSession.
SqlSession: Objeto utilizado para realizar operaciones de persistencia, similar a Connection en jdbc.
SqlSessionTemplate: una herramienta proporcionada por MyBatis para crear plantillas de acceso a la capa de persistencia. Es seguro para subprocesos y puede inyectar instancias de SqlSessionFactory a través de parámetros o dependencias del constructor.
Hibernate es similar a MyBatis o m framework. La siguiente es una comparación con Hibernate. Hibernate se usa para administrar conexiones y se implementa a través de las siguientes clases importantes:
SessionFactory: usado para. cree Session Factory de instancias, similar a SqlSessionFactory,
Session: un objeto utilizado para realizar operaciones de persistencia, similar a Connection en jdbc:
Plantilla de Hibernación: Hibernate proporciona un acceso a la capa de Persistencia con plantilla La instalación, segura para subprocesos, se puede inyectar en SessionFactory a través de parámetros o dependencias del constructor. Las instancias de SessionFactory se pueden inyectar mediante parámetros de constructor o dependencias. spring.SqlSessionFactoryBean">
A través de la configuración anterior, Spring Se creará automáticamente un objeto SqlSessionFactory utilizando la clase org.mybatis.spring.SqlSessionFactory proporcionada por MyBatis. La clase proporcionada por MyBatis para Spring para crear SqlSessionFactory sugerirá un ****able en el contexto de la aplicación Spring. Instancia de SqlSessionFactory, podemos pasar SqlSessionFactory a alguna interfaz MyBatis mediante inyección de dependencia">
<. /bean>
De esta manera, podemos usar la anotación Spring @Transactional para el control de transacciones, lo que indica que el método especificado por el método de anotación debe estar en la transacción. en funcionamiento. Spring confirmará la transacción después de que se complete exitosamente y realizará una reversión de excepción si ocurre un error en la transacción. Además, Spring proporcionará información de excepción específica al convertir las excepciones MyBatis generadas en DataAccessExceptions apropiadas.
A continuación, analizaremos el código fuente de getSession en SqlSessionUtils para obtener más información sobre el proceso de generación de sqlSession. El código fuente es el siguiente:
public static SqlSession getSqlSession( SqlSessionFactory sessionFactory. , ExecutorType executorType, PersistenceExceptionTranslator excepciónTranslator) {
notNull( sessionFactory, "No se especificó SqlSessionFactory");
notNull(executorType, "No se especificó ningún ExecutorType"); > SqlSessionHolder titular = ( SqlSessionHolder) getResource(sessionFactory);
if (holder != null && titular.isSynchronizedWithTransaction()) {
if (holder.getExecutorType() != executorType ) {
Lanza una nueva TransientDataAccessResourceException ("No se puede cambiar ExecutorType mientras existe una transacción existente"
}
holder.requested();
);if (logger.isDebugEnabled()) {
logger.debug("Fetched SqlSession [" +holder.getSqlSession ()); El método getSession anterior puede obtener SqlSession del administrador de transacciones de Spring o crearlo. una nueva SqlSession, este método intentará obtener la SqlSession de la transacción actual y luego, si se configura una fábrica con un administrador de transacciones y el administrador de transacciones de Spring está activo, bloqueará la SqlSession en la transacción actual para garantizar la sincronización. La creación de SqlSession se completa principalmente mediante los siguientes pasos:
Primero, obtendrá SqlSessionHolder, que se utiliza para guardar la SqlSession actual en TransactionSynchronizationManager.
Si el titular no está vacío y está bloqueado por una transacción, puede utilizarlo.
Si el titular no existe o no está bloqueado por una transacción , luego se creará una Nueva sqlSession, es decir, crear una nueva SqlSession a través del método sessionFactory.openSession ().
Si el titular no existe o no está bloqueado por la transacción, se creará una nueva sqlSession, es decir, se crea una nueva SqlSession a través del método sessionFactory.openSession().
Si una transacción está activa en el hilo actual, la SqlSession se registrará para la sincronización de transacciones, es decir, la SqlSession se registrará para la sincronización de transacciones.