Mybatis中的鏈接池&&事務控制

Mybatis中的鏈接池&&事務控制

  • mybatis中的鏈接池
  • mybatis中配置事務自動提交

  1. mybatis中的鏈接池
  1. 鏈接池概念
1.    鏈接池就是用於存儲鏈接的一個容器,
2.    容器其實就是一個集合對象, 該集合必須是【線程安全】的, 通能兩個線程拿到同一鏈接
3.    該集合還必須實現隊列的特性:先進先出
  1. mybatis中 提供了三種鏈接池技術
1.mybatis中的鏈接池提供了三種方式的配置:
    1. 配置的位置:主文件SqlMapConfig.xml中的dataSource標籤。type屬性就是表示採用何種
    鏈接池的方式
    2. type屬性的取值:
        1. POOLED:     採用傳統的Javax.sql.DataSource規範中的鏈接池。mybatis中有
        針對規範的實現 【經常使用】
        2. UNPOOLED:   採用傳統的獲取連接的方式,雖然也實現Javax.sql.DataSource接口,
        可是並無池的思想。
        3.JNDI:        採用服務器提供的JNDI技術實現,來獲取DataSource對象,不一樣的
        服務器所能拿到的DataSource對象是不同的。
        注意:若是不是web或者maven的war工程,是不能使用的。
    3. tomcat服務器,使用的是dbcp鏈接池
  1. 更換鏈接池
<environments default="mysql">
         <!-- 配置MySQL的環境 -->
         <environment id="mysql">
             <!-- 配置事務的類型 -->
             <transactionManager type="JDBC"></transactionManager>
             <!-- 配置數據源(鏈接池) -->
             <dataSource type="POOLED"> <!-- POOLED、UNPOOLED、JNDI -->
                 <!-- 配置連接數據庫的四個基本信息 -->
                 <property name="driver" value="${jdbc.driver}"/>
                 <property name="url" value="${jdbc.url}"/>
                 <property name="username" value="${jdbc.username}"/>
                 <property name="password" value="${jdbc.password}"/>
             </dataSource>
         </environment>
     </environments>
  1. Mybatis中DataSource的存取
1.    MyBatis是經過工廠模式來建立數據源DataSource對象的,MyBatis定義了抽象的工廠接口:org.apache.ibatis.datasource.DataSourceFactory,經過其getDataSource()方法返回數據源DataSource。

2.    MyBatis建立了DataSource實例後,會將其放到Configuration對象內的Environment對象中, 供之後使用。

3.    當咱們須要建立SqlSession對象並須要執行SQL語句時,這時候MyBatis纔會去調用dataSource對象來建立java.sql.Connection對象。

4.    也就是說,java.sql.Connection對象的建立一直延遲到執行SQL語句的時候。
  1. mybatis中配置事務自動提交
SqlSession session = factory.openSession(true);
//使用openSession的重構方法,設置參數爲true。便可自動提交事務

注意:在開發中通常不採用自動提交,由於多個表發生改變的時候,自動提交控制不住。java

相關文章
相關標籤/搜索