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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SqlSession的使用范围---Mybatis学习笔记(五)

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SqlSession的使用范围---Mybatis学习笔记(五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹:

SqlSession中封裝了對數據庫的操作,如:查詢、插入、更新、刪除等。
通過SqlSessionFactory創建SqlSession,而SqlSessionFactory是通過SqlSessionFactoryBuilder進行創建。

SqlSessionFactoryBuilder:

SqlSessionFactoryBuilder用于創建SqlSessionFacoty,SqlSessionFacoty一旦創建完成就不需要SqlSessionFactoryBuilder了,因為SqlSession是通過SqlSessionFactory生產,所以可以將SqlSessionFactoryBuilder當成一個工具類使用,最佳使用范圍是方法范圍即方法體內局部變量。

SqlSessionFactory:

SqlSessionFactory是一個接口,接口中定義了openSession的不同重載方法,SqlSessionFactory的最佳使用范圍是整個應用運行期間,一旦創建后可以重復使用,通常以單例模式管理SqlSessionFactory。

SqlSession:

SqlSession是一個面向用戶的接口, sqlSession中定義了數據庫操作,默認使用DefaultSqlSession實現類。
執行過程如下:
1、 加載數據源等配置信息
Environment environment = configuration.getEnvironment();
2、 創建數據庫鏈接
3、 創建事務對象
4、 創建Executor,SqlSession所有操作都是通過Executor完成,mybatis源碼如下:

if (ExecutorType.BATCH == executorType) {executor = newBatchExecutor(this, transaction);} else if (ExecutorType.REUSE == executorType) {executor = new ReuseExecutor(this, transaction);} else {executor = new SimpleExecutor(this, transaction);} if (cacheEnabled) {executor = new CachingExecutor(executor, autoCommit);}

5、 SqlSession的實現類即DefaultSqlSession,此對象中對操作數據庫實質上用的是Executor
結論:
每個線程都應該有它自己的SqlSession實例。SqlSession的實例不能共享使用,它也是線程不安全的。因此最佳的范圍是請求或方法范圍。絕對不能將SqlSession實例的引用放在一個類的靜態字段或實例字段中。
打開一個 SqlSession;使用完畢就要關閉它。通常把這個關閉操作放到 finally 塊中以確保每次都能執行關閉。如下:

SqlSession session = sqlSessionFactory.openSession();try {// do work} finally {session.close();}

總結

以上是生活随笔為你收集整理的SqlSession的使用范围---Mybatis学习笔记(五)的全部內容,希望文章能夠幫你解決所遇到的問題。

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