- 鏈接池概念
1. 鏈接池就是用於存儲鏈接的一個容器, 2. 容器其實就是一個集合對象, 該集合必須是【線程安全】的, 通能兩個線程拿到同一鏈接 3. 該集合還必須實現隊列的特性:先進先出
- 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鏈接池
- 更換鏈接池
<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>
- 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語句的時候。
SqlSession session = factory.openSession(true); //使用openSession的重構方法,設置參數爲true。便可自動提交事務注意:在開發中通常不採用自動提交,由於多個表發生改變的時候,自動提交控制不住。java