最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

1. MyBatis 自帶的連接池 PooledDataSource

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

1.1 PooledDataSource 的基本工作原理

  • 連接創(chuàng)建和回收:當應用程序請求數(shù)據(jù)庫連接時,PooledDataSource 會從池中取出一個可用的連接。如果池中沒有可用的連接且未達到最大連接數(shù),則創(chuàng)建一個新連接;否則,應用程序需要等待,直到有連接被歸還到池中。

  • 連接復用:當應用程序使用完連接后,連接并不會關閉,而是被歸還到池中,供后續(xù)請求復用。

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

1.2 PooledDataSource 的配置參數(shù)

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

  • driver:JDBC 驅(qū)動類名稱。

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

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

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

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

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

  • poolMaximumCheckoutTime:連接被取出后最長可以使用的時間,超時后連接會被強制回收,默認值是 20000 毫秒(20 秒)。

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

  • poolPingQuery:用于測試連接是否有效的 SQL 語句,默認是 "NO PING QUERY SET"。

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

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

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>

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

1.4 使用 PooledDataSource 的局限性

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

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

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

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

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

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

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

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

  • C3P0:C3P0 是一個成熟的連接池實現(xiàn),提供了豐富的配置選項和較好的性能表現(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>

總結

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

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

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

  • 切換連接池:MyBatis 支持通過簡單的配置切換到其他連接池,靈活性高。

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

相關文章

  • java easyPOI實現(xiàn)導出一對多數(shù)據(jù)

    java easyPOI實現(xiàn)導出一對多數(shù)據(jù)

    這篇文章主要為大家詳細介紹了java如何利用easyPOI實現(xiàn)導出一對多數(shù)據(jù),并且可以設置邊框、字體和字體大小,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • 解讀Maven安裝全過程

    解讀Maven安裝全過程

    下載并安裝Maven時,需注意IDE的兼容版本,例如,IDEA2022及之前兼容至Maven3.8.1,而IDEA2020則至3.6.3,安裝后,配置MAVEN_HOME環(huán)境變量并調(diào)整settings.xml以使用本地倉庫和阿里云鏡像,以優(yōu)化構建和下載速度,最后,確保IDEA項目默認使用正確的Maven配置
    2024-11-11
  • SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增刪改查分頁)

    SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增刪改查分頁)

    這篇文章主要給大家介紹了關于SpringMVC4 + MyBatis3 + SQL Server 2014整合的相關資料,文中包括介紹了增刪改查分頁等相關內(nèi)容,通過示例代碼介紹的非常詳細,分享出來供大家參考學習,下面來一起看看吧。
    2017-06-06
  • 創(chuàng)建一個Java的不可變對象

    創(chuàng)建一個Java的不可變對象

    這篇文章主要介紹了創(chuàng)建一個Java的不可變對象,一個類的對象在通過構造方法創(chuàng)建后如果狀態(tài)不會再被改變,那么它就是一個不可變(immutable)類。它的所有成員變量的賦值僅在構造方法中完成,不會提供任何 setter 方法供外部類去修改,需要的朋友可以參考下
    2021-11-11
  • 詳解如何在spring中創(chuàng)建全局異常處理器

    詳解如何在spring中創(chuàng)建全局異常處理器

    全局異常處理器在實際項目開發(fā)中是一個很重要的工具,對保證代碼的正常運行有很重要的作用,所以下面來講一下如何在spring中創(chuàng)建一個全局異常處理器,感興趣的的朋友可以參考下
    2023-12-12
  • 透明化Sharding-JDBC數(shù)據(jù)庫字段加解密方案

    透明化Sharding-JDBC數(shù)據(jù)庫字段加解密方案

    這篇文章主要為大家介紹了透明化Sharding-JDBC數(shù)據(jù)庫字段加解密方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • java property配置文件管理工具框架過程詳解

    java property配置文件管理工具框架過程詳解

    這篇文章主要介紹了java property配置文件管理工具框架過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Java?數(shù)據(jù)庫連接池Druid?的介紹

    Java?數(shù)據(jù)庫連接池Druid?的介紹

    這篇文章主要給大家分享的是?Java?數(shù)據(jù)庫連接池Druid?的介紹,Druid是一個JDBC組件,它包括三部分:?DruidDriver?代理Driver,能夠提供基于Filter-Chain模式的插件體系。?DruidDataSource?高效可管理的數(shù)據(jù)庫連接池,下面來看看文中的詳細內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • 詳解Spring中bean實例化的三種方式

    詳解Spring中bean實例化的三種方式

    本篇文章主要介紹了詳解Spring中bean實例化的三種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java 在PDF中添加條形碼的兩種方法

    Java 在PDF中添加條形碼的兩種方法

    本文就將通過使用Java程序來演示如何在PDF文檔中添加Codebar、Code128A和Code39條形碼。通過實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-03-03

最新評論

抚州市| 蓬安县| 濉溪县| 日喀则市| 永城市| 于都县| 乐安县| 玛沁县| 新密市| 温宿县| 通州区| 迭部县| 连云港市| 蓬安县| 琼海市| 镇巴县| 香格里拉县| 乐都县| 岳阳市| 读书| 晋江市| 宝丰县| 莱阳市| 新晃| 娄烦县| 荣成市| 枣庄市| 安义县| 且末县| 济宁市| 汝南县| 阿拉善盟| 鞍山市| 景德镇市| 张北县| 梧州市| 余姚市| 平谷区| 内乡县| 甘泉县| 海口市|