1. 程式人生 > >MyBatis原始碼閱讀--生命週期

MyBatis原始碼閱讀--生命週期

MyBatis原始碼閱讀–生命週期

##前言 MyBatis執行SQL主要有以下三個步驟: 1.通過SqlSessionFactoryBuilder獲取SqlSessionFactory 2.通過SqlSessionFactory獲取SqlSession 3.通過SqlSession獲取Mapper執行SQL
//1.通過SqlSessionFactoryBuilder獲取SqlSessionFactory
SqlSessionFactory  factory;
Reader reader = Resources.getResourceAsReader("mybatis-config.xml")
; factory = new SqlSessionFactoryBuilder().build(reader); //2.通過SqlSessionFactory獲取SqlSession SqlSession sqlSession = factory.openSession(); //3.通過SqlSession獲取Mapper執行SQL try { sysUserMapper = sqlSession.getMapper(SysUserMapper.class); SysUser sysUser = new
SysUser(); sysUser.setCreateTime(new Date()); sysUserMapper.insert(sysUser); List<SysUser> sysUsers = sysUserMapper.selectAll(); } catch (Exception ex) { ex.printStackTrace(); } finally { //關閉sqlSession sqlSession.close(); }

生命週期

SqlSessionFactoryBuilder生命週期

SqlSessionFactoryBuilder的作用是建立SqlSessionFactory,建立完成後不再使用,因此建立SqlSessionFactory後,其生命週期已經結束,其應該被垃圾回收器回收。

SqlSessionFactory生命週期

SqlSessionFactory的作用是建立SqlSession,SqlSession是一個會話,每次需要訪問資料庫時便會建立一個SqlSession,因此其生命週期應該和整個MyBatis一致。由於建立SqlSessionFactory會消耗資料庫連線資源,因此SqlSessionFactory不應該建立多個,否則將會造成資料庫連線資源不足,因此SqlSessionFactory應該設計成單例模式。

SqlSession生命週期

SqlSession是一個會話,每次需要訪問資料庫時,由SqlSessionFactory建立,訪問結束後需要立即關閉。如果不關閉會造成資料庫訪問資源減少,從而降低效能。

Mapper生命週期

Mapper是一個介面,MyBatis通過它使用動態代理的方式,傳送SQL語句去執行,並返回結果。其生命週期在SqlSession範圍內。