Class SqlSessionUtils

java.lang.Object
org.mybatis.spring.SqlSessionUtils

public final class SqlSessionUtils extends Object
Handles MyBatis SqlSession life cycle. It can register and get SqlSessions from Spring TransactionSynchronizationManager. Also works if no transaction is active.
Author:
Hunter Presnall, Eduardo Macarron
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    closeSqlSession(org.apache.ibatis.session.SqlSession session, org.apache.ibatis.session.SqlSessionFactory sessionFactory)
    Checks if SqlSession passed as an argument is managed by Spring TransactionSynchronizationManager If it is not, it closes it, otherwise it just updates the reference counter and lets Spring call the close callback when the managed transaction ends
    static org.apache.ibatis.session.SqlSession
    getSqlSession(org.apache.ibatis.session.SqlSessionFactory sessionFactory)
    Creates a new MyBatis SqlSession from the SqlSessionFactory provided as a parameter and using its DataSource and ExecutorType
    static org.apache.ibatis.session.SqlSession
    getSqlSession(org.apache.ibatis.session.SqlSessionFactory sessionFactory, org.apache.ibatis.session.ExecutorType executorType, org.springframework.dao.support.PersistenceExceptionTranslator exceptionTranslator)
    Gets an SqlSession from Spring Transaction Manager or creates a new one if needed.
    static boolean
    isSqlSessionTransactional(org.apache.ibatis.session.SqlSession session, org.apache.ibatis.session.SqlSessionFactory sessionFactory)
    Returns if the SqlSession passed as an argument is being managed by Spring

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • getSqlSession

      public static org.apache.ibatis.session.SqlSession getSqlSession(org.apache.ibatis.session.SqlSessionFactory sessionFactory)
      Creates a new MyBatis SqlSession from the SqlSessionFactory provided as a parameter and using its DataSource and ExecutorType
      Parameters:
      sessionFactory - a MyBatis SqlSessionFactory to create new sessions
      Returns:
      a MyBatis SqlSession
      Throws:
      org.springframework.dao.TransientDataAccessResourceException - if a transaction is active and the SqlSessionFactory is not using a SpringManagedTransactionFactory
    • getSqlSession

      public static org.apache.ibatis.session.SqlSession getSqlSession(org.apache.ibatis.session.SqlSessionFactory sessionFactory, org.apache.ibatis.session.ExecutorType executorType, org.springframework.dao.support.PersistenceExceptionTranslator exceptionTranslator)
      Gets an SqlSession from Spring Transaction Manager or creates a new one if needed. Tries to get a SqlSession out of current transaction. If there is not any, it creates a new one. Then, it synchronizes the SqlSession with the transaction if Spring TX is active and SpringManagedTransactionFactory is configured as a transaction manager.
      Parameters:
      sessionFactory - a MyBatis SqlSessionFactory to create new sessions
      executorType - The executor type of the SqlSession to create
      exceptionTranslator - Optional. Translates SqlSession.commit() exceptions to Spring exceptions.
      Returns:
      an SqlSession managed by Spring Transaction Manager
      Throws:
      org.springframework.dao.TransientDataAccessResourceException - if a transaction is active and the SqlSessionFactory is not using a SpringManagedTransactionFactory
      See Also:
    • closeSqlSession

      public static void closeSqlSession(org.apache.ibatis.session.SqlSession session, org.apache.ibatis.session.SqlSessionFactory sessionFactory)
      Checks if SqlSession passed as an argument is managed by Spring TransactionSynchronizationManager If it is not, it closes it, otherwise it just updates the reference counter and lets Spring call the close callback when the managed transaction ends
      Parameters:
      session - a target SqlSession
      sessionFactory - a factory of SqlSession
    • isSqlSessionTransactional

      public static boolean isSqlSessionTransactional(org.apache.ibatis.session.SqlSession session, org.apache.ibatis.session.SqlSessionFactory sessionFactory)
      Returns if the SqlSession passed as an argument is being managed by Spring
      Parameters:
      session - a MyBatis SqlSession to check
      sessionFactory - the SqlSessionFactory which the SqlSession was built with
      Returns:
      true if session is transactional, otherwise false