1. 程式人生 > >MyBatis範圍和生命週期

MyBatis範圍和生命週期

SqlSession
每個執行緒都應該有它自己的SqlSession例項。SqlSession的例項不能共享使用,它也是執行緒不安全的。因此最佳的範圍是請求或方法範圍。絕對不能將SqlSession例項的引用放在一個類的靜態欄位甚至是例項欄位中。也絕不能將SqlSession例項的引用放在任何型別的管理範圍中,比如Serlvet架構中的HttpSession。如果你現在正用任意的Web框架,要考慮SqlSession放在一個和HTTP請求物件相似的範圍內。換句話說,基於收到的HTTP請求,你可以打開了一個SqlSession,然後返回響應,就可以關閉它了。關閉Session很重要,你應該確保使用finally塊來關閉它
。下面的示例就是一個確保SqlSession關閉的基本模式:
SqlSession session = sqlSessionFactory.openSession();
try {
// do work
} finally {
session.close();
}
在你的程式碼中一貫地使用這種模式,將會保證所有資料庫資源都正確地關閉(假設你沒有通過你自己的連線關閉,這會給MyBatis造成一種跡象表明你要自己管理連線資源)。

相關推薦

MyBatis範圍生命週期

SqlSession每個執行緒都應該有它自己的SqlSession例項。SqlSession的例項不能共享使用,它也是執行緒不安全的。因此最佳的範圍是請求或方法範圍。絕對不能將SqlSession例項的引用放在一個類的靜態欄位甚至是例項欄位中。也絕不能將SqlSession例項的引用放在任何型別的管理範圍中,

[MyBatis] 主要類的作用域生命週期

主要類的作用域和生命週期 SqlSessionFactoryBuilder SqlSessionFactory SqlSession 對映器例項(Mapper Instances) 理解以上類的不同作用域和生命週期類是至關重要的,因為錯誤的使用會導致非

Mybatis中SqlSessionFactoryBuilder/SqlSessionFactory/SqlSession/對映器例項的作用域(Scope)生命週期

SqlSessionFactoryBuilder 這個類可以被例項化、使用和丟棄,一旦建立了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 例項的最佳作用域是方法作用域(也就是區域性方法變數)。你可以重用 SqlS

MyBatis的核心元件生命週期

1 核心元件:(1)、SqlSessionFactoryBuilder(構造器):它會根據配置或者程式碼來生成SqlSessionFactory,採用的是分佈構建的Builder模式。(2)、SqlSe

MyBatis中的作用域生命週期

SqlSessionFactoryBuilder        這個類可以被例項化,使用和丟棄,一旦建立了SqlSessionFactory,就不再需要它,因此SqlSessionFactoryBuilder例項的最佳作用域是方法作用域(也就是區域性方法變數)。可以重用Sql

Mybatis學習-配置、作用域生命週期

**核心配置檔案**:Mybatis-config.xml Mybatis的配置檔案包含了會深深影響Mybatis行為的設定和屬性資訊 ## 配置(configuration) > 在mybatis-config.xml檔案中標籤都有規定的順序,需要按照以下順序新增 properties?,setting

Vue例項生命週期

建立一個Vue例項 每個Vue應用都是通過Vue函式建立一個新的Vue例項開始: var vm = new Vue({ //選項 }) 資料與方法 當一個Vue例項被建立時,它向Vue的響應式系統中加入了其data物件中能找到的所有屬性。當這個屬性的值發生變化時,檢視將產生"響應",即匹配更新

碎片Fragment(頁面上加入碎片併合理使用的二種方式生命週期)

一、靜態註冊         佈局檔案中直接放置fragment節點,可被多個佈局檔案同時引用(Logo  廣告等)         注意:fragment 節點要增加name屬性指定該fragme

C語言中符號的儲存類、連結屬性生命週期

C語言中符號的儲存類 程式碼段:程式執行的程式碼,其實就是函式,它的生命週期是永久的(永久的意思就是在程式被執行時誕生,在程式終止時消亡),不過一般程式碼的生命週期我們並不關注。有時候放在程式碼段的不只是程式碼,還有const型別的常量,還有字串常量(const型別的常量、字串常量有時候放在

[PHP]程式碼執行生命週期

PHP程式碼的執行:1.和大部分程式一樣,接收資料,處理資料,輸出結果2.編寫的程式碼就是輸入的資料,php核心進行處理,返回相應的輸出3.php作為業務程式和編譯語言的區別就是,php多了一步把使用者程式碼翻譯為機器語言的步驟:詞法分析,語法分析4.詞法分析把php程式碼分割成一個個單元,語法分析將這些單元

程式碼執行生命週期php語言

文章來自:原始碼線上https://www.shengli.me/php/297.html   PHP程式碼的執行: 1.和大部分程式一樣,接收資料,處理資料,輸出結果 2.編寫的程式碼就是輸入的資料,php核心進行處理,返回相應的輸出 3.php作為業務程式和編譯語言的區別就是,

react 初探:類元件、狀態生命週期

react 除了提供函式式元件外,還提供了類元件,類元件提供了狀態屬性,下面一起吧之前的函式元件轉換成類元件。 /* 類元件定義 */ class Clock extends React.Component{ render(){ return (

2.maven常用命令生命週期(慕課網)

一.maven專案工程demo 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

Servlet初探生命週期

1、什麼是ServletServlet是JavaWeb的三大元件之一,它屬於動態資源。Servlet的作用是處理請求,伺服器會把接收到的請求交給Servlet來處理 2、實現Servlet的方式●實現javax.servlet.Servlet介面;●繼承javax.servlet.Gener

SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession作用域(Scope)生命週期

可以說每個MyBatis都是以一個SqlSessionFactory例項為中心的。SqlSessionFactory例項可以通過SqlSessionFactoryBuilder來構建。一是可以通過XML配置檔案的方式來構建SqlSessionFactory,二是可以通過Jav

Java基礎面試題(11)----Servlet的理解生命週期

問題 說說對servlet的理解? 什麼是servlet的生命週期? 回答 Servlet是什麼? selvet(server applet),全稱Java Servlet,使用Java語言編寫的服務端程式,這些servlet都需要繼承HttpServlet這個

MyBatis原始碼閱讀--生命週期

MyBatis原始碼閱讀–生命週期 ##前言 MyBatis執行SQL主要有以下三個步驟: 1.通過SqlSessionFactoryBuilder獲取SqlSessionFactory 2.通過SqlSessionFactory獲取SqlSession 3

Activity的四種狀態生命週期

        Android程式中,Activity是程式和使用者互動的介面,在系統中存在四種狀態:Running, Paused, Stopped, Killed。         Running是指Activity在系統中獲得焦點的狀態,此時使用者可以與該程式進行互動

一起學習Mybatis----基本構成/生命週期

基本構成:      SqlsessionFactoryBuilder(構造器):它會根據配置資訊或者程式碼來生成SqlsessionFactory(工廠介面)。      SqlsessionFactory:依靠工廠來生成 Sql

C# Command命令(行為型模式)+佇列 實現事務,帶非同步命令重試機制生命週期

一、簡介 耦合是軟體不能抵禦變變化的根本性原因,不僅實體物件與實體物件之間有耦合關係(如建立性設計模式存在的原因),物件和行為之間也存在耦合關係.   二、實戰 1、常規開發中,我們經常會在控制器中或者Main方法中呼叫多個物件,進行批量的操作(完成一次事務性的操作),像下面這樣: