SPRING
2017.04.26 / 22:54

spring closing non transactional sqlsession - spring mybatis Æ®·£Àè¼Ç ¼³Á¤

tomcater
Ãßõ ¼ö 261

MyBatis ¿¡¼­ Æ®·£Àè¼ÇÀ» ¼³Á¤ÇÏ´Â ¹æ¹ýÀº ¿©·¯°¡Áö°¡ ÀÖ´Ù. 

  • DaoSupport ¸¦ »ó¼Ó¹ÞÀº Dao¸¦ ÀÛ¼ºÇÏ¿© ¼öµ¿À» Æ®·£Àè¼ÇÀ» ó¸®
  • AOP ·Î Æ®·£Àè¼Ç ó¸®
  • @Transactional ¾î³ëÅ×À̼ÇÀ¸·Î ó¸®

ÀÌ»ó°ú °°Àº ¹æ¹ýÀÌ ÀÖÀ» ¼ö Àִµ¥ ÀÌÁß¿¡¼­ ¾Æ·¡ÀÇ 2°³¸¦ »ç¿ëÇÏ¿© ó¸®ÇÏ¿´´Ù. 

¿ì¼± Æ®·£Àè¼Ç 󸮸¦ Çϸ鼭 2ÀÏ Á¤µµ °í»ýÀ» Çߴµ¥ ¿øÀÎÀº ´ÙÀ½°ú °°¾Ò´Ù. 

* DispatcherServlet(DS)ÀÇ ¼³Á¤°ú ¸ÞÀÎ ApplicationContext(AC)ÀÇ ¼³Á¤ÀÌ ¸ðµÎ °øÀ¯°¡ µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù. 

Áï AC¿¡ ¼³Á¤ÇÑ Æ®·£Àè¼ÇÀÇ Á¤º¸°¡ DS¿¡µµ ¹Ù·Î Àû¿ëµÇ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ DS¿¡µµ µû·Î ¼³Á¤À» ÇØÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. 




<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:config/context-*.xml
        </param-value>
    </context-param>
    
    <!-- Creates the Spring Container shared by all Servlets and Filters -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/root-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
        
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>


ó·³ ¼³Á¤µÇ¾úÀ» ¶§ ac¿¡ ¼³Á¤ÇÑ Æ®·£Àè¼Ç Á¤º¸´Â appServlet¿¡ Àû¿ëµÇÁö ¾Ê´Â´Ù. 

µû¶ó¼­ root-context.xml ÆÄÀÏ¿¡ Çѹø´õ Æ®·£Àè¼ÇÀ» ¼³Á¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. 

ÀÌ´Â ·Î±×¸¦ º¸¸é ´õ È®½ÇÇÏ°Ô ¾Ë ¼ö ÀÖ´Ù. 

Æ®·£Àè¼Ç󸮰¡ µÇÁö ¾Ê¾ÒÀ» ¶§´Â ´ÙÀ½°ú °°Àº ·Î±×°¡ ³ª¿Â´Ù .

DEBUG: org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1a51312] was not registered for synchronization because synchronization is not active
DEBUG: org.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
DEBUG: org.mybatis.spring.transaction.SpringManagedTransaction - JDBC Connection [jdbc:oracle:thin:@10.10.6.58:1521:ORACLE, UserName=FTAMGR, Oracle JDBC driver] will not be managed by Spring
DEBUG: sdk.spring.mybatis.dao.IMessageDao.insertMessage - ooo Using Connection [jdbc:oracle:thin:@10.10.6.58:1521:ORACLE, UserName=FTAMGR, Oracle JDBC driver]
DEBUG: sdk.spring.mybatis.dao.IMessageDao.insertMessage - ==>  Preparing: INSERT INTO MESSAGE (MESSAGE_NO, MESSAGE_NAME, MESSAGE_KOR, MESSAGE_ENG, MESSAGE_LOC, DELETE_YN, CREATE_DATE, CREATE_BY, UPDATE_DATE, UPDATE_BY) VALUES (2000, ?, ?, 'TEST', '', 'N', SYSDATE, 'MYBATIS_TEST', SYSDATE, 'MYBATIS_TEST') 
DEBUG: sdk.spring.mybatis.dao.IMessageDao.insertMessage - ==> Parameters: MY_BATIS_TEST(String), ¸¶À̹ÙƼ½º(String)
DEBUG: org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1a51312]


Æ®·£Àè¼Ç 󸮰¡ µÇÁö ¾Ê¾Ò´Ù´Â ·Î±×°¡ ³ªÅ¸³ª´Â °ÍÀÌ´Ù. 

ÇÏÁö¸¸ Æ®·£Àè¼ÇÀÌ Ã³¸®°¡ µÇ¸é ´ÙÀ½°ú °°ÀÌ ·Î±×°¡ ³ªÅ¸³­´Ù. 

DEBUG: org.springframework.jdbc.datasource.DataSourceTransactionManager - Creating new transaction with name [sdk.spring.mybatis.service.MessageServiceImpl.insertMessage]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; '',-java.lang.Exception
DEBUG: org.springframework.jdbc.datasource.DataSourceTransactionManager - Acquired Connection [jdbc:oracle:thin:@10.10.6.58:1521:ORACLE, UserName=FTAMGR, Oracle JDBC driver] for JDBC transaction
DEBUG: org.springframework.jdbc.datasource.DataSourceTransactionManager - Switching JDBC Connection [jdbc:oracle:thin:@10.10.6.58:1521:ORACLE, UserName=FTAMGR, Oracle JDBC driver] to manual commit
DEBUG: org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@304648]
DEBUG: org.mybatis.spring.transaction.SpringManagedTransaction - JDBC Connection [jdbc:oracle:thin:@10.10.6.58:1521:ORACLE, UserName=FTAMGR, Oracle JDBC driver] will be managed by Spring
DEBUG: sdk.spring.mybatis.dao.IMessageDao.insertMessage - ooo Using Connection [jdbc:oracle:thin:@10.10.6.58:1521:ORACLE, UserName=FTAMGR, Oracle JDBC driver]
DEBUG: sdk.spring.mybatis.dao.IMessageDao.insertMessage - ==>  Preparing: INSERT INTO MESSAGE (MESSAGE_NO, MESSAGE_NAME, MESSAGE_KOR, MESSAGE_ENG, MESSAGE_LOC, DELETE_YN, CREATE_DATE, CREATE_BY, UPDATE_DATE, UPDATE_BY) VALUES (2000, ?, ?, 'TEST', '', 'N', SYSDATE, 'MYBATIS_TEST', SYSDATE, 'MYBATIS_TEST') 
DEBUG: sdk.spring.mybatis.dao.IMessageDao.insertMessage - ==> Parameters: MY_BATIS_TEST(String), ¸¶À̹ÙƼ½º(String)
DEBUG: org.mybatis.spring.SqlSessionUtils - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@304648]
DEBUG: org.springframework.jdbc.datasource.DataSourceTransactionManager - Initiating transaction rollback
DEBUG: org.springframework.jdbc.datasource.DataSourceTransactionManager - Rolling back JDBC transaction on Connection [jdbc:oracle:thin:@10.10.6.58:1521:ORACLE, UserName=FTAMGR, Oracle JDBC driver]
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization rolling back SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@304648]
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@304648]
DEBUG: org.springframework.jdbc.datasource.DataSourceTransactionManager - Releasing JDBC Connection [jdbc:oracle:thin:@10.10.6.58:1521:ORACLE, UserName=FTAMGR, Oracle JDBC driver] after transaction
DEBUG: org.springframework.jdbc.datasource.DataSourceUtils - Returning JDBC Connection to DataSource

ó·³ ÀÚ½ÅÀÌ Æ®·£Àè¼Ç 󸮰¡ µÇ¾ú´Ù´Â °ÍÀ» ¾Ë·ÁÁØ´Ù. 

* Æ®·£Àè¼Ç 󸮿¡¼­ Á¦ÀÏ Áß¿äÇÑ °ÍÀº »óÀ§ÀÇ ¼³Á¤ÀÌ ÇÏÀ§±îÁö ¿µÇâÀ» ¹ÌÄ¡´ÂÁö È®ÀÎÇÏ°í, Á¤»óÀûÀ¸·Î 󸮰¡ µÇ°í ÀÖ´Â Áöµµ È®ÀÎÇÏ´Â °ÍÀÌ´Ù. 

* À̺κи¸ ÀÌÇØÇϸé Æ®·£Àè¼Ç 󸮿¡ ¾î·Á¿òÀº ¾øÀ» °ÍÀÌ´Ù. 

* Spring Æ®·£Àè¼Ç 󸮽à AOP ÇÁ·Ï½Ã¸¦ »ç¿ëÇϴµ¥ ÀÌ´Â ÀÎÅÍÆäÀ̽º°¡ Á¸ÀçÇØ¾ß ÇÑ´Ù. Áï, Æ®·£Àè¼ÇÀ» ó¸®Çϴ Ŭ·¡½º´Â ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù. ÀÎÅÍÆäÀ̽º ¾øÀÌ Ã³¸®Çϱâ À§Çؼ­´Â CGLIB ¸¦ ÀÌ¿ëÇÏ¿© ó¸®Çϵµ·Ï ÇÑ´Ù. 

Ãâó - http://cafe.naver.com/tanosimisekai/1426



Ãâó: http://lunal.tistory.com/entry/spring-mybatis-Æ®·£Àè¼Ç-¼³Á¤ [·ç³¯]