欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis 數(shù)據(jù)庫(kù)連接池的實(shí)現(xiàn)示例

 更新時(shí)間:2023年10月13日 09:41:01   作者:語(yǔ)言-逆行者  
在Java應(yīng)用程序中,與數(shù)據(jù)庫(kù)的連接是非常昂貴的,因此,當(dāng)我們使用MyBatis進(jìn)行數(shù)據(jù)操作時(shí),需要一個(gè)連接池來(lái)分配并管理這些連接,本文主要介紹了Mybatis 數(shù)據(jù)庫(kù)連接池的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

1)數(shù)據(jù)庫(kù)連接池定義

  • 數(shù)據(jù)庫(kù)連接池是個(gè)容器,負(fù)責(zé)分配、管理數(shù)據(jù)庫(kù)連接(Connection)
  • 它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接,而不是再重新建立一個(gè)
  • 釋放空閑時(shí)間超過(guò)最大空閑時(shí)間的連接,來(lái)避免因?yàn)闆]有釋放連接而引起的數(shù)據(jù)庫(kù)連接遺漏。也就是,如果某個(gè)操作占用的連接超出了預(yù)定的時(shí)間,就會(huì)自動(dòng)釋放連接。

2)連接對(duì)象工作原理

【1】無(wú)連接池

  • [1]每次執(zhí)行某個(gè)操作的時(shí)候,需要手動(dòng)建立一個(gè)連接對(duì)象。
  • [2]再使用連接對(duì)象去訪問(wèn)數(shù)據(jù)庫(kù)執(zhí)行相關(guān)的操作。
  • [3]當(dāng)應(yīng)用程序不再需要這個(gè)連接時(shí),它會(huì)關(guān)閉連接。
  • [4]如果應(yīng)用程序需要再次連接數(shù)據(jù)庫(kù),它會(huì)重新創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)連接。

【2】有連接池

  • [1]初始化連接池。在系統(tǒng)啟動(dòng)時(shí),連接池會(huì)生成一定數(shù)量的數(shù)據(jù)庫(kù)連接,并將這些連接放入池中。
  • [2]獲取連接。當(dāng)應(yīng)用程序需要與數(shù)據(jù)庫(kù)進(jìn)行交互時(shí),它會(huì)從連接池中獲取一個(gè)可用的連接。
  • [3]使用連接。應(yīng)用程序使用連接進(jìn)行數(shù)據(jù)庫(kù)操作。
  • [4]釋放連接。當(dāng)應(yīng)用程序完成數(shù)據(jù)庫(kù)操作后,它會(huì)將連接返回給連接池,而不是將連接關(guān)閉。這樣可以避免頻繁地創(chuàng)建和銷毀連接,提高系統(tǒng)性能。
  • [5]銷毀連接。如果連接池中的連接長(zhǎng)時(shí)間未被使用,連接池會(huì)將這些連接銷毀,以釋放系統(tǒng)資源。

3)標(biāo)準(zhǔn)接口DataSource

  • 官方(sun)提供的數(shù)據(jù)庫(kù)連接池接口,由第三方組織實(shí)現(xiàn)此接口。
  • 它定義了訪問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)方法。這些方法包括從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)并將其返回到Java應(yīng)用程序,以及將數(shù)據(jù)寫回到數(shù)據(jù)庫(kù)中的能力。

DataSource接口提供以下方法:

方法描述
getConnection()獲取一個(gè)數(shù)據(jù)庫(kù)連接
getConnection(String username, String password)獲取一個(gè)帶有用戶名和密碼的數(shù)據(jù)庫(kù)連接。
getLoginTimeout()獲取登錄超時(shí)時(shí)間。
setLoginTimeout(int seconds)設(shè)置登錄超時(shí)時(shí)間。
getLogWriter()獲取一個(gè)PrintWriter,用于將日志消息寫入。
setLogWriter(PrintWriter out)設(shè)置一個(gè)PrintWriter,用于將日志消息寫入。
unwrap(Class iface)將DataSource轉(zhuǎn)換為指定接口的實(shí)現(xiàn)對(duì)象。
isWrapperFor(Class<?> iface)判斷是否DataSource實(shí)現(xiàn)了指定接口。
getLoginTimeout()獲取登錄超時(shí)時(shí)間。
setLoginTimeout(int seconds)設(shè)置登錄超時(shí)時(shí)間。
getLogWriter()獲取一個(gè)PrintWriter,用于將日志消息寫入。
setLogWriter(PrintWriter out)設(shè)置一個(gè)PrintWriter,用于將日志消息寫入。
unwrap(Class iface)將DataSource轉(zhuǎn)換為指定接口的實(shí)現(xiàn)對(duì)象。
isWrapperFor(Class<?> iface)判斷是否DataSource實(shí)現(xiàn)了指定接口。

4)常用的數(shù)據(jù)庫(kù)連接池

C3PO、 DBCP、Druid(德魯伊)、HIkari(追光者),主要介紹常用的最后兩個(gè)。

【1】 Druid(德魯伊)

  • 阿里巴巴開源的數(shù)據(jù)庫(kù)連接池項(xiàng)目
  • 功能強(qiáng)大,性能優(yōu)秀,是java語(yǔ)言最好的數(shù)據(jù)庫(kù)連接池之一

【2】 Hikari(追光者)

SpringBoot默認(rèn)自帶的連接池

運(yùn)行SpringBoot項(xiàng)目的一個(gè)測(cè)試?yán)樱梢缘弥悄J(rèn)使用Hikari連接池。

5)如何切換連接池?

pom.xml文件配置

在pom.xml配置文件中引入德魯伊的起步依賴

依賴坐標(biāo)如下:

<!--引入德魯伊的起步依賴-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.2.8</version>
		</dependency>

刷新后還是不行的需要去application配置文件聲明一下type。在application.properties文件中加上type的配置信息:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

測(cè)試切換成功

到此這篇關(guān)于Mybatis 數(shù)據(jù)庫(kù)連接池的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Mybatis 數(shù)據(jù)庫(kù)連接池內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評(píng)論