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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

MyBatis 实际使用案例-核心对象的生命周期

發布時間:2024/4/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis 实际使用案例-核心对象的生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在編程式使用的這個demo 里面,我們看到了MyBatis 里面的幾個核心對象:SqlSessionFactoryBuiler、SqlSessionFactory、SqlSession 和Mapper 對象。這幾個核心對象在MyBatis 的整個工作流程里面的不同環節發揮作用。如果說我們不用容器,自己去管理這些對象的話,我們必須思考一個問題:什么時候創建和銷毀這些對象?

在一些分布式的應用里面,多線程高并發的場景中,如果要寫出高效的代碼,必須了解這四個對象的生命周期。這四個對象的聲明周期的描述在官網上面也可以找到。

http://www.mybatis.org/mybatis-3/zh/getting-started.html

我們從每個對象的作用的角度來理解一下,只有理解了它們是干什么的,才知道什么時候應該創建,什么時候應該銷毀。

1)SqlSessionFactoryBuiler

首先是SqlSessionFactoryBuiler 。它是用來構建SqlSessionFactory 的, 而SqlSessionFactory 只需要一個,所以只要構建了這一個SqlSessionFactory,它的使命就完成了,也就沒有存在的意義了。所以它的生命周期只存在于方法的局部。

2)SqlSessionFactory

SqlSessionFactory 是用來創建SqlSession 的,每次應用程序訪問數據庫,都需要創建一個會話。因為我們一直有創建會話的需要,所以SqlSessionFactory 應該存在于應用的整個生命周期中(作用域是應用作用域)。創建SqlSession 只需要一個實例來做這件事就行了,否則會產生很多的混亂,和浪費資源。所以我們要采用單例模式。

3)SqlSession

SqlSession 是一個會話,因為它不是線程安全的,不能在線程間共享。所以我們在請求開始的時候創建一個SqlSession 對象,在請求結束或者說方法執行完畢的時候要及時關閉它(一次請求或者操作中)。

4)Mapper

Mapper(實際上是一個代理對象)是從SqlSession 中獲取的。

BlogMapper mapper = session.getMapper(BlogMapper.class);

它的作用是發送SQL 來操作數據庫的數據。它應該在一個SqlSession 事務方法之內。

最后總結如下:

對象生命周期
SqlSessionFactoryBuiler方法局部(method)
SqlSessionFactory(單例)應用級別(application)
SqlSession請求和操作(request/method)
Mapper方法(method)

這個就是我們在編程式的使用里面看到的四個對象的生命周期的總結。

?

總結

以上是生活随笔為你收集整理的MyBatis 实际使用案例-核心对象的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

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