Mybatis 數(shù)據(jù)庫連接池的實現(xiàn)示例
1)數(shù)據(jù)庫連接池定義
- 數(shù)據(jù)庫連接池是個容器,負(fù)責(zé)分配、管理數(shù)據(jù)庫連接(Connection)
- 它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個
- 釋放空閑時間超過最大空閑時間的連接,來避免因為沒有釋放連接而引起的數(shù)據(jù)庫連接遺漏。也就是,如果某個操作占用的連接超出了預(yù)定的時間,就會自動釋放連接。
2)連接對象工作原理
【1】無連接池
- [1]每次執(zhí)行某個操作的時候,需要手動建立一個連接對象。
- [2]再使用連接對象去訪問數(shù)據(jù)庫執(zhí)行相關(guān)的操作。
- [3]當(dāng)應(yīng)用程序不再需要這個連接時,它會關(guān)閉連接。
- [4]如果應(yīng)用程序需要再次連接數(shù)據(jù)庫,它會重新創(chuàng)建一個新的數(shù)據(jù)庫連接。
【2】有連接池
- [1]初始化連接池。在系統(tǒng)啟動時,連接池會生成一定數(shù)量的數(shù)據(jù)庫連接,并將這些連接放入池中。
- [2]獲取連接。當(dāng)應(yīng)用程序需要與數(shù)據(jù)庫進(jìn)行交互時,它會從連接池中獲取一個可用的連接。
- [3]使用連接。應(yīng)用程序使用連接進(jìn)行數(shù)據(jù)庫操作。
- [4]釋放連接。當(dāng)應(yīng)用程序完成數(shù)據(jù)庫操作后,它會將連接返回給連接池,而不是將連接關(guān)閉。這樣可以避免頻繁地創(chuàng)建和銷毀連接,提高系統(tǒng)性能。
- [5]銷毀連接。如果連接池中的連接長時間未被使用,連接池會將這些連接銷毀,以釋放系統(tǒng)資源。
3)標(biāo)準(zhǔn)接口DataSource
- 官方(sun)提供的數(shù)據(jù)庫連接池接口,由第三方組織實現(xiàn)此接口。
- 它定義了訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)方法。這些方法包括從數(shù)據(jù)庫中檢索數(shù)據(jù)并將其返回到Java應(yīng)用程序,以及將數(shù)據(jù)寫回到數(shù)據(jù)庫中的能力。
DataSource接口提供以下方法:
方法 | 描述 |
---|---|
getConnection() | 獲取一個數(shù)據(jù)庫連接 |
getConnection(String username, String password) | 獲取一個帶有用戶名和密碼的數(shù)據(jù)庫連接。 |
getLoginTimeout() | 獲取登錄超時時間。 |
setLoginTimeout(int seconds) | 設(shè)置登錄超時時間。 |
getLogWriter() | 獲取一個PrintWriter,用于將日志消息寫入。 |
setLogWriter(PrintWriter out) | 設(shè)置一個PrintWriter,用于將日志消息寫入。 |
unwrap(Class iface) | 將DataSource轉(zhuǎn)換為指定接口的實現(xiàn)對象。 |
isWrapperFor(Class<?> iface) | 判斷是否DataSource實現(xiàn)了指定接口。 |
getLoginTimeout() | 獲取登錄超時時間。 |
setLoginTimeout(int seconds) | 設(shè)置登錄超時時間。 |
getLogWriter() | 獲取一個PrintWriter,用于將日志消息寫入。 |
setLogWriter(PrintWriter out) | 設(shè)置一個PrintWriter,用于將日志消息寫入。 |
unwrap(Class iface) | 將DataSource轉(zhuǎn)換為指定接口的實現(xiàn)對象。 |
isWrapperFor(Class<?> iface) | 判斷是否DataSource實現(xiàn)了指定接口。 |
4)常用的數(shù)據(jù)庫連接池
C3PO、 DBCP、Druid(德魯伊)、HIkari(追光者),主要介紹常用的最后兩個。
【1】 Druid(德魯伊)
- 阿里巴巴開源的數(shù)據(jù)庫連接池項目
- 功能強(qiáng)大,性能優(yōu)秀,是java語言最好的數(shù)據(jù)庫連接池之一
【2】 Hikari(追光者)
SpringBoot默認(rèn)自帶的連接池
運行SpringBoot項目的一個測試?yán)?,可以得知是默認(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
測試切換成功
到此這篇關(guān)于Mybatis 數(shù)據(jù)庫連接池的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Mybatis 數(shù)據(jù)庫連接池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java統(tǒng)計文件中每個字符出現(xiàn)的個數(shù)
這篇文章主要為大家詳細(xì)介紹了java統(tǒng)計文件中每個字符出現(xiàn)的個數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03Java解決xss轉(zhuǎn)義導(dǎo)致轉(zhuǎn)碼的問題
跨站腳本攻擊XSS是最普遍的Web應(yīng)用安全漏洞,本文主要介紹了Java解決xss轉(zhuǎn)義導(dǎo)致轉(zhuǎn)碼的問題,具有一定的參考價值,感興趣的可以了解一下2023-08-08基于JVM 調(diào)優(yōu)的技巧總結(jié)分析
本篇文章是對JVM 調(diào)優(yōu)的技巧進(jìn)行了總結(jié)和分析。需要的朋友參考下2013-05-05