MyBatis 生命週期

  一.SqlSessionFactoryBuilder

    SqlSessionFactoryBuilder是利用XML或是Java編碼獲得資源來構建SqlSessionFactory的,通過他可以構建多個SessionFactory.他的作用就是構建器,一旦我們構建了SqlSessionFactory,他的作用就已經完結,就沒有什麼意義了我們就可以去回收了他,所以他的生命週期就是存在於方法的局部,他的作用就是就用來我們產生SqlSessionFactory;

  二.SqlSessionFactory

    SqlSessionFactory他的作用就是創建SqlSession,而SqlSession就是一個會話,相當於JDBC當中的Connection對象.每次訪問數據庫我們就是通過SqlSessionFactory來創建一個SqlSession,所以SqlSessionFactory應該是在整個應用的生命週期的,而如果我們多次創建同一個SqlSessionFactory,則每次創建SqlSessionFactory會打開更多的數據庫連接資源,那麼連接資源很快就會被耗盡.因此這裏我們的SqlSessionFactory的責任是唯一的,他的責任就是創建SqlSession,所以在這裏我們採用單例模式.所以如果是有多個數據庫,那麼最好的作法就是一個數據庫只對應一個SqlSessionFactory;

 

  三.SqlSession

    SqlSession是一個會話,相當於JDBC當中的Connection對象.他的生命週期是請求數據庫處理事務過程中.他是一個線程不安全的對象,需要特別的當心,操作數據庫需要注意他其隔離級別,數據庫鎖等高級特性.此外在每次創建SqlSession都必須及時關閉,他如果長期存在就會使得數據庫連接池活動資源減少,對系統的性能影響很大,所以在我們使用時需要添加一個finally{}並且在這裏判斷並關閉.他存活於一個應用請求和操作,可以執行多條SQL,保證事務的一至性.

 

  四.Mapper

    Mapper是一個接口,而沒有任何的實現類,他的作用就是發送SQL,然後返回我們需要的結果,或者是執行SQL從而修改數據庫數據,因此他應該是在一個SqlSession事務方法之中,是一個方法級別的東西.他就像JDBC當上的一條SQL語句的執行,他的最大範圍和SqlSession是相同的,

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章