轉自:http://ccchhhlll1988-163-com.iteye.com/blog/1420026
MyBatis中常用的類就要數SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、SqlMapper了。那么下面對他們的應用范圍和生命周期進行一下說明:
1、SqlSessionFactoryBuilder:在應用中該類實例的主要作用是創建SqlSessionFactory實例,故任務完成后就可以消失了。因此該類實例的最佳應用范圍和生命周期應為“方法范圍”。
2、SqlSessionFactory:在應用的整個周期中會有眾多地方需要利用其實例打開某個SqlSession,因此最佳范圍是“應用生命周期范圍”。故此,可以使用單例與工廠模式,在官方文檔中最佳建議是IoC容器,如Spring來生成該實例。
3、SqlSession:該類是非線程安全的,其實例是不能共享的,所以應該每個線程具有自己的SqlSession實例。因此最佳建議是“請求或方法范圍”。例如:收到一個Http請求后,創建一個實例,進行某些操作,之后關閉。確保將關閉放於finally中。
4、SqlMapper:是創建綁定映射語句的接口。其實例從SqlSession獲得,所以其最寬生命周期與SqlSession相同,因此其實例的執行范圍也是“方法范圍”,而且其不需要明確的關閉。