1. 程式人生 > >MyBatis基本元件與其生命週期

MyBatis基本元件與其生命週期

本文對MyBatis核心元件總結並瞭解其在MyBatis應用中的生命週期。

MyBatis核心元件:

  • SqlSessionFactoryBuilder: 根據配置資訊生成SqlSessionFactory.
  • SqlSessionFactory:建立SqlSession。
  • SqlSession: SqlSession類似JDBC的Connection物件,是一個既可以傳送SQL執行並返回結果,也可以獲取Mapper的介面。
  • SQL Mapper: 它是MyBatis新設計的元件,由一個java介面和XML檔案組成,需要給出對應的SQL和對映規則,負責傳送SQL去執行,並返回結果。
Created with Raphaël 2.1.0
StartSqlSessionFactoryBuilderSqlSessionFactorySqlSessionSQL MapperendEndend

各元件生命週期:

  1. SqlSessionFactoryBuilder

    SqlSessionFactoryBuilder是利用XML或者java編碼獲得資源來構建SqlSessionFactoryde ,通過它可以構建多個SessionFactory。它的作用就是一個構建器,一旦我們構建了SqlSessionFactory,它的作用就已經完結了,失去了存在的意義。所以它的生命週期只存在於方法的內部

  2. SqlSessionFactory

    SqlSessionFactory的作用是建立SqlSession,而SqlSession就是一個會話,相當於JDBC中的Connection物件。每次應用程式訪問資料庫,我們都需要SqlSessionFactory建立SqlSession,所以SqlSessionFactory應該在MyBatis應用的整個生命週期中。

    而如果我們多次建立同一個資料庫的SqlSessionFactory,則每次建立SqlSessionFactory會開啟更多的資料庫連線資源,那麼連線資源就很快會被耗盡。因此SqlSessionFactory的責任是唯一的,它的責任就是建立SqlSession,所以應該採用單利模式。正確的做法是使得每一個數據庫只對應一個SqlSessionFactory,管理好資料庫資源的分配,避免過多的Connection被消耗。

  3. SqlSession

    SqlSession是一個會話,相當於JDBC的一個Connection物件,它的生命週期應該是在請求資料庫處理事務的過程中。它是一個執行緒不安全的物件,在涉及多執行緒的時候我們需要特別小心,操作資料庫需要注意其隔離級別,資料庫鎖等高階特效。此外,每次建立的SqlSession都必須及時關閉它,它的長期存在會使資料庫連線池的活動資源減少,對系統性能的影響太大。它存活於一個應用的請求和操作,可以執行多條SQL,保證事務的一致性。

  4. Mapper

    Mapper是一個介面,而沒有具體的實現類,它的作用是傳送SQL,然後返回我們需要的結果,或者執行SQL從而修改資料庫的資料,因此它應該在一個SqlSession事務方法之內,是一個方法級別的東西。

相關推薦

MyBatis基本元件與其生命週期

本文對MyBatis核心元件總結並瞭解其在MyBatis應用中的生命週期。 MyBatis核心元件: SqlSessionFactoryBuilder: 根據配置資訊生成SqlSessionFac

MyBatis 四大核心元件生命週期

首先要明確 MyBatis 的四大核心元件為哪些。 SqlSessionFactoryBuilder (構造器):它會根據配置或者程式碼來生成 SqlSessionFactory,採用的是分部構建的 Builder 模式。 SqlSessionFactory(工廠介面):依靠它來

React——元件基本結構及其生命週期

元件基本結構 建構函式constructor 功能:子級繼承父級的時候,通過建構函式獲取父級的屬性和方法,並通過super()傳遞的引數進行構造。 constructor(){super()} 元件建構函式會在元件例項的時候最先呼叫! construct

MyBatis的核心元件生命週期

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

MyBatis元件生命週期

SQLSessionFactoryBuilder SQLSessionFactoryBuilder是利用XML或者Java編碼獲得資源來構建SqlSessionFactory的,通過它可以構建多個SessionFactory。它的作用就是一個構建器,一旦構建了

Android四大基本元件介紹以及四大元件生命週期

這次認真閱讀了別人寫的Android四大基本元件的介紹以及四大元件的生命週期。別人寫得真的是很好。所以把連結記錄下來,以後可以再次的複習。http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html;

Mybatis筆記: 各元件生命週期

SqlSessionFactoryBuilder:            它的用途僅僅用於產生SqlSessionFactory例項, 一旦產生後基本上沒用,應該銷燬.SqlSessionFactory:            相當於緩衝池(如連線池)的作用, 用於派發和回收

React Native元件生命週期

                  生命週期執行流程圖 元件的生命週期分成三個狀態:            1.Mounting(裝

Maven學習筆記(二)--maven基本命令以及生命週期

Maven基本命令 -v:查詢Maven版本  本命令用於檢查maven是否安裝成功。  Maven安裝完成之後,在命令列輸入mvn -v,若出現maven資訊,則說明安裝成功。 compile:編譯  將Java原始檔編譯成class檔案

React - 元件生命週期詳解(及各階段呼叫的方法)

轉自http://www.hangge.com/blog/cache/detail_1473.html React - 元件的生命週期詳解(及各階段呼叫的方法) 2016-12-22釋出:hangge閱讀:2699 ReactJS 的核心思想是元件化,即按功能封裝成一個一個的元

react入門筆記七 (元件生命週期)

生命週期分三個狀態 mounting(元件掛載階段) updating(元件更新) unmounting(元件移除) props與state         生命週期分四個階段 建立階

Vue學習(7)————————元件以及生命週期函式,vue-resource請求資料

首先建立一個Home.vue檔案 <template> <div> <p>{{msg}}</p> <button v-on:click="headRun()">跑</button> </di

java多執行緒(一):執行緒的五種基本狀態以及生命週期

1、Java執行緒具有五中基本狀態: 新建狀態(New):當執行緒物件對建立後,即進入了新建狀態,如:Thread thread1 = new MyThread(); 就緒狀態(Runnable):當呼叫執行緒物件的start()方法[ 如:thread1 .start(); ],執行緒

React原始碼解析(3):元件生命週期

元件的生命週期分為二個部分 元件的掛載 元件的更新 元件的掛載 在上一章對於元件的掛載已經做了詳細的說明,但是涉及到元件生命週期部分被略過.接下來我將詳細的對其說明. 元件的掛載涉及到二個比較重要的生命週期方法componentWillMount和componentDidMount. c

vue--同步父子元件和非同步父子元件生命週期順序

關於vue元件的引入方式有兩種 一、 同步引入 例子: import Page from '@/components/page' 二、非同步引入 例子:const Page = () => import('@/components/page') 或者:

Vue學習之旅----元件生命週期

<template> <div id="app"> <v-home></v-home> <v-news></v-news> <router-view /> &l

vue元件生命週期(轉)

vue元件的生命週期 Vue所有的生命週期鉤子自動繫結在this上下文到例項中,因此你可以訪問資料,對屬性和方法進行運算。這意味著你不能使用箭頭函式來定義一個生命週期方法。這是因為箭頭函式綁定了父上下文,因此this與你期待的Vue例項不同。 1、beforeCreate   在例項初始

路由場景下父子元件生命週期順序來個刨根問底

大家中秋假期快樂,假期分享一些原理設計文章給大家 原創不易,歡迎轉發,一起學習(凌晨寫的,不容易哈,收藏或者點個贊吧) 在常見的單頁應用中,我們都會有一個根 App.vue 檔案,裡面放置一個 router-view 然後配置路由來切換. 很多人在子父元件巢狀關係下的生命週期鉤子函式如何應用,誰先誰

Raect Native之四 元件生命週期

什麼是元件的生命週期? 元件的生命週期有哪些方法,有什麼作用? 生命週期方法都在什麼時候呼叫? 先上圖: getInitialState 和 getDefaultProps(ES6不在推薦再使用) 元件的生命週期可分成三個狀態: Mountin

6、Angular 2元件生命週期鉤子

如果打算自己寫元件庫的話,元件的宣告週期需要深入掌握。尋常的業務程式碼倒不會太涉及這方面的東西。 元件生命週期的這些鉤子的執行順序 如下圖所示: 實現的ngOnChanges(){}鉤子方法會在元件的最先執行,比ngOnInit()