日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession

發布時間:2023/10/11 综合教程 354 老码农
生活随笔 收集整理的這篇文章主要介紹了 SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
 可以說每個MyBatis都是以一個SqlSessionFactory實例為中心的。SqlSessionFactory實例可以通過SqlSessionFactoryBuilder來構建。一是可以通過XML配置文件的方式來構建SqlSessionFactory,二是可以通過Java API的方式來構建。但不管通過什么方式都有一個Configuration貫穿始終,各種配置正是通過Configuration實例來完成實現。
  此篇文章旨在通過編碼實現MyBatis3.4.1 User Guide所提到的作用域和生命周期指導建議。為什么要了解作用域和生命周期呢?在作用域內正確地使用SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession會讓我們避免多線程環境下并發所帶來的問題。當然如果使用依賴(DI)注入框架(Spring)可不用在代碼中關心作用域問題,因為依賴注入框架會為我們做好幾乎一切工作。
  首先我們來看User Guide對SqlSessionFactoryBuilder作用域以及生命周期的指導意見。
SqlSessionFactoryBuilder
  這個類可以被實例化、使用和丟棄,一旦創建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 實例的最佳范圍是方法范圍(也就是局部方法變量)。你可以重用 SqlSessionFactoryBuilder 來創建多個 SqlSessionFactory 實例,但是最好還是不要讓其一直存在以保證所有的 XML 解析資源開放給更重要的事情。
SqlSessionFactory
  SqlSessionFactory 一旦被創建就應該在應用的運行期間一直存在,沒有任何理由對它進行清除或重建。使用 SqlSessionFactory 的最佳實踐是在應用運行期間不要重復創建多次,多次重建 SqlSessionFactory 被視為一種代碼“壞味道(bad smell)”。因此  SqlSessionFactory 的最佳范圍是應用范圍。有很多方法可以做到,最簡單的就是使用單例模式或者靜態單例模式。
SqlSession
  每個線程都應該有它自己的 SqlSession 實例。SqlSession 的實例不是線程安全的,因此是不能被共享的,所以它的最佳的范圍是請求或方法范圍。絕對不能將 SqlSession 實例的引用放在一個類的靜態域,甚至一個類的實例變量也不行。也絕不能將 SqlSession 實例的引用放在任何類型的管理范圍中,比如 Serlvet 架構中的 HttpSession。如果你現在正在使用一種 Web 框架,要考慮 SqlSession 放在一個和 HTTP 請求對象相似的范圍中。換句話說,每次收到的 HTTP 請求,就可以打開一個 SqlSession,返回一個響應,就關閉它。這個關閉操作是很重要的,你應該把這個關閉操作放到 finally 塊中以確保每次都能執行關閉。
sqlMapper 
   由一個java接口和xml文件組成 ,包含了要執行的sql語句和結果集映射規則 方法范圍

總結

以上是生活随笔為你收集整理的SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。