亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis 自帶連接池的具體實(shí)現(xiàn)

 更新時(shí)間:2024年12月04日 10:20:39   作者:這孩子叫逆  
MyBatis自帶的PooledDataSource實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)連接池,適合簡(jiǎn)單場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

MyBatis 本身并不提供專(zhuān)門(mén)的連接池實(shí)現(xiàn),但它可以通過(guò)內(nèi)置的 PooledDataSource 類(lèi)提供一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)連接池。這個(gè)連接池實(shí)現(xiàn)非?;A(chǔ),適合一些簡(jiǎn)單場(chǎng)景,但對(duì)于生產(chǎn)環(huán)境,通常建議使用第三方的成熟連接池,如 HikariCP、Apache DBCP 或 C3P0 等。

1. MyBatis 自帶的連接池 PooledDataSource

PooledDataSource 是 MyBatis 提供的一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)。它將數(shù)據(jù)庫(kù)連接保存在池中,避免頻繁創(chuàng)建和銷(xiāo)毀連接,從而提高性能。PooledDataSource 基于傳統(tǒng)的對(duì)象池思想設(shè)計(jì),包含了最基本的連接池功能。

1.1 PooledDataSource 的基本工作原理

  • 連接創(chuàng)建和回收:當(dāng)應(yīng)用程序請(qǐng)求數(shù)據(jù)庫(kù)連接時(shí),PooledDataSource 會(huì)從池中取出一個(gè)可用的連接。如果池中沒(méi)有可用的連接且未達(dá)到最大連接數(shù),則創(chuàng)建一個(gè)新連接;否則,應(yīng)用程序需要等待,直到有連接被歸還到池中。

  • 連接復(fù)用:當(dāng)應(yīng)用程序使用完連接后,連接并不會(huì)關(guān)閉,而是被歸還到池中,供后續(xù)請(qǐng)求復(fù)用。

  • 連接有效性檢測(cè)PooledDataSource 會(huì)檢測(cè)連接是否有效,如果發(fā)現(xiàn)連接失效(如網(wǎng)絡(luò)異常、數(shù)據(jù)庫(kù)重啟等導(dǎo)致的連接中斷),會(huì)銷(xiāo)毀該連接,并在下次請(qǐng)求時(shí)創(chuàng)建一個(gè)新連接。

1.2 PooledDataSource 的配置參數(shù)

你可以在 MyBatis 的配置文件中配置 PooledDataSource。以下是常用的配置參數(shù):

  • driver:JDBC 驅(qū)動(dòng)類(lèi)名稱(chēng)。

  • url:數(shù)據(jù)庫(kù)連接 URL。

  • username:數(shù)據(jù)庫(kù)用戶名。

  • password:數(shù)據(jù)庫(kù)密碼。

  • poolMaximumActiveConnections:池中可同時(shí)使用的最大連接數(shù),默認(rèn)值是 10。

  • poolMaximumIdleConnections:池中最大空閑連接數(shù),默認(rèn)值是 5。

  • poolMaximumCheckoutTime:連接被取出后最長(zhǎng)可以使用的時(shí)間,超時(shí)后連接會(huì)被強(qiáng)制回收,默認(rèn)值是 20000 毫秒(20 秒)。

  • poolTimeToWait:沒(méi)有可用連接時(shí),線程最多等待的時(shí)間,超時(shí)則拋出異常,默認(rèn)值是 20000 毫秒(20 秒)。

  • poolPingQuery:用于測(cè)試連接是否有效的 SQL 語(yǔ)句,默認(rèn)是 "NO PING QUERY SET"。

  • poolPingEnabled:是否啟用偵測(cè)連接有效性的 ping 操作,默認(rèn)值是 false。

  • poolPingConnectionsNotUsedFor:配置多少時(shí)間未使用的連接需要進(jìn)行一次 ping 操作,默認(rèn)值是 0 毫秒(即每次都進(jìn)行 ping 檢測(cè))。

1.3 示例配置

以下是使用 PooledDataSource 的 MyBatis 配置文件示例:

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
                <property name="poolMaximumActiveConnections" value="20"/>
                <property name="poolMaximumIdleConnections" value="10"/>
                <property name="poolMaximumCheckoutTime" value="30000"/>
                <property name="poolTimeToWait" value="30000"/>
                <property name="poolPingQuery" value="SELECT 1"/>
                <property name="poolPingEnabled" value="true"/>
                <property name="poolPingConnectionsNotUsedFor" value="60000"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

在這個(gè)配置中,PooledDataSource 配置了 MySQL 數(shù)據(jù)庫(kù)連接池,最多允許 20 個(gè)連接同時(shí)活躍,10 個(gè)空閑連接,并且配置了連接有效性檢測(cè)。

1.4 使用 PooledDataSource 的局限性

雖然 PooledDataSource 可以滿足一些基本的連接池需求,但它的功能和性能相對(duì)較為簡(jiǎn)單,可能不適合復(fù)雜的生產(chǎn)環(huán)境。以下是一些局限性:

  • 缺乏高級(jí)功能PooledDataSource 缺少許多現(xiàn)代連接池所提供的高級(jí)特性,如連接泄漏檢測(cè)、連接池監(jiān)控、異步連接回收等。

  • 性能有限PooledDataSource 在高并發(fā)環(huán)境下的性能和穩(wěn)定性可能不如專(zhuān)業(yè)的連接池實(shí)現(xiàn)。

  • 可擴(kuò)展性差PooledDataSource 的可擴(kuò)展性較差,不易定制和擴(kuò)展。

2. 生產(chǎn)環(huán)境推薦使用的連接池

在生產(chǎn)環(huán)境中,建議使用性能更好、功能更強(qiáng)大的連接池實(shí)現(xiàn),如:

  • HikariCP:HikariCP 是目前性能最好的 JDBC 連接池之一,具有非常低的連接延遲和很高的吞吐量,并且配置簡(jiǎn)單、功能強(qiáng)大。

  • Apache DBCP:DBCP 是 Apache Commons 提供的連接池實(shí)現(xiàn),功能豐富,廣泛使用于各種 Java 應(yīng)用中。

  • C3P0:C3P0 是一個(gè)成熟的連接池實(shí)現(xiàn),提供了豐富的配置選項(xiàng)和較好的性能表現(xiàn)。

3. 切換到第三方連接池

如果要切換到第三方連接池,MyBatis 只需要更改配置即可。以 HikariCP 為例:

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="com.zaxxer.hikari.HikariDataSource">
                <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
                <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
                <property name="maximumPoolSize" value="20"/>
                <property name="minimumIdle" value="10"/>
                <property name="idleTimeout" value="600000"/>
                <property name="connectionTimeout" value="30000"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

總結(jié)

  • PooledDataSource:MyBatis 自帶的簡(jiǎn)單連接池實(shí)現(xiàn),適合簡(jiǎn)單場(chǎng)景,提供了基本的連接池管理功能。

  • 局限性PooledDataSource 在性能、功能、穩(wěn)定性方面存在一些局限性,不適合生產(chǎn)環(huán)境。

  • 推薦使用第三方連接池:在生產(chǎn)環(huán)境中,建議使用功能更強(qiáng)大、性能更好的連接池實(shí)現(xiàn),如 HikariCP、Apache DBCP 或 C3P0。

  • 切換連接池:MyBatis 支持通過(guò)簡(jiǎn)單的配置切換到其他連接池,靈活性高。

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

相關(guān)文章

  • Mybatis-Plus根據(jù)自定義注解實(shí)現(xiàn)自動(dòng)加解密的示例代碼

    Mybatis-Plus根據(jù)自定義注解實(shí)現(xiàn)自動(dòng)加解密的示例代碼

    我們把數(shù)據(jù)存到數(shù)據(jù)庫(kù)的時(shí)候,有些敏感字段是需要加密的,從數(shù)據(jù)庫(kù)查出來(lái)再進(jìn)行解密,如果我們使用的是Mybatis框架,那就跟著一起探索下如何使用框架的攔截器功能實(shí)現(xiàn)自動(dòng)加解密吧,需要的朋友可以參考下
    2024-06-06
  • 創(chuàng)建并運(yùn)行一個(gè)java線程方法介紹

    創(chuàng)建并運(yùn)行一個(gè)java線程方法介紹

    這篇文章主要介紹了創(chuàng)建并運(yùn)行一個(gè)java線程,涉及線程代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • struts2實(shí)現(xiàn)多文件上傳

    struts2實(shí)現(xiàn)多文件上傳

    這篇文章主要為大家詳細(xì)介紹了struts2實(shí)現(xiàn)多文件上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 踩坑Debug啟動(dòng)失敗,無(wú)報(bào)錯(cuò)信息問(wèn)題

    踩坑Debug啟動(dòng)失敗,無(wú)報(bào)錯(cuò)信息問(wèn)題

    在進(jìn)行項(xiàng)目debug時(shí)遇到了無(wú)法啟動(dòng)的問(wèn)題,項(xiàng)目一直處于正在啟動(dòng)狀態(tài),但未出現(xiàn)任何報(bào)錯(cuò)信息,分析原因可能是存在不合法的斷點(diǎn)位置,即斷點(diǎn)未打在方法內(nèi)部,解決方法是檢查所有斷點(diǎn)信息,并移除非法斷點(diǎn),之后項(xiàng)目能夠正常啟動(dòng)
    2023-02-02
  • JAVA驗(yàn)證碼工具實(shí)例代碼

    JAVA驗(yàn)證碼工具實(shí)例代碼

    這篇文章主要介紹了JAVA驗(yàn)證碼工具實(shí)例代碼,需要的朋友可以參考下
    2018-03-03
  • 淺析如何高效格式化輸出JSON字符串

    淺析如何高效格式化輸出JSON字符串

    JSON(JavaScript?Object?Notation)作為一種輕量級(jí)的數(shù)據(jù)交換格式,已經(jīng)成為了各種編程語(yǔ)言間傳遞數(shù)據(jù)的標(biāo)準(zhǔn),下面我們就來(lái)聊聊如何高效格式化輸出JSON字符串吧
    2025-01-01
  • SpringBoot環(huán)境搭建及第一個(gè)程序運(yùn)行(小白教程)

    SpringBoot環(huán)境搭建及第一個(gè)程序運(yùn)行(小白教程)

    這篇文章主要介紹了SpringBoot環(huán)境搭建及第一個(gè)程序運(yùn)行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java中Properties類(lèi)的操作實(shí)例詳解

    Java中Properties類(lèi)的操作實(shí)例詳解

    這篇文章主要介紹了Java中Properties類(lèi)的操作實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 在Maven下代理服務(wù)器設(shè)定的方式

    在Maven下代理服務(wù)器設(shè)定的方式

    今天小編就為大家分享一篇關(guān)于在Maven下代理服務(wù)器設(shè)定的方式,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Java利用TCP實(shí)現(xiàn)服務(wù)端向客戶端消息群發(fā)的示例代碼

    Java利用TCP實(shí)現(xiàn)服務(wù)端向客戶端消息群發(fā)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Java如何利用TCP協(xié)議實(shí)現(xiàn)服務(wù)端向客戶端消息群發(fā)功能,文中的示例代碼講解詳細(xì),需要的可以參考下,希望對(duì)你有所幫助
    2022-08-08

最新評(píng)論