擴(kuò)展Hibernate使用自定義數(shù)據(jù)庫(kù)連接池的方法
本文實(shí)例講述了擴(kuò)展Hibernate使用自定義數(shù)據(jù)庫(kù)連接池的方法。分享給大家供大家參考,具體如下:
在Hibernate的過(guò)程中往往碰到這樣的問(wèn)題:我們現(xiàn)成的產(chǎn)品本來(lái)已使用自有的數(shù)據(jù)庫(kù)連接池,同時(shí)使用Hibernate的話在Hibernate配置中也得配置數(shù)據(jù)庫(kù)連接信息,這樣就需要在兩個(gè)地方維護(hù)數(shù)據(jù)庫(kù)連接信息,維護(hù)起來(lái)感覺(jué)相當(dāng)別扭。
由于我們不是在產(chǎn)品剛開(kāi)始開(kāi)發(fā)就加入Hibernate的,所以不合適讓產(chǎn)品直接使用Hibernate的連接池,只好讓Hibernate來(lái)使用產(chǎn)品自有的連接池,還好Hibernate已提供了連接池的擴(kuò)展接口:ConnectionProvider。
Hibernate本身是通過(guò)ConnectionProvider接口來(lái)實(shí)現(xiàn)管理數(shù)據(jù)庫(kù)連接的。例如其自帶的C3P0ConnectionProvider,ProxoolConnectionProvider等,我們編寫一個(gè)實(shí)現(xiàn)ConnectionProvider接口的類,在Hibernate的配置文件中將相關(guān)參數(shù)改成該類就OK,相關(guān)代碼如下:
hibernate.cfg.xml中用以下代碼替代之前的數(shù)據(jù)庫(kù)連接信息配置:
<!-- 自定義-使用NMS產(chǎn)品的連接池 --> <property name="hibernate.connection.provider_class"> com.shine.sourcedesk.jbpm.NmsConnectionProvider </property>
實(shí)現(xiàn)ConnectionManager接口的類:
package com.shine.sourcedesk.jbpm; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import org.hibernate.HibernateException; import org.hibernate.connection.ConnectionProvider; import com.shine.framework.jdbc.ConnectionManager; /** * 自定義Hibernate連接池,讓Hibernate使用產(chǎn)品的ConnectionManager * @author JiangKunpeng * */ public class NmsConnectionProvider implements ConnectionProvider{ @Override public void close() throws HibernateException { } @Override public void closeConnection(Connection connection) throws SQLException { //關(guān)閉連接 ConnectionManager.close(connection); } @Override public void configure(Properties properties) throws HibernateException { } @Override public Connection getConnection() throws SQLException { //使用產(chǎn)品的數(shù)據(jù)庫(kù)連接池獲取連接 return ConnectionManager.getConnection(); } @Override public boolean supportsAggressiveRelease() { return false; }
希望本文所述對(duì)大家基于Hibernate框架的Java程序設(shè)計(jì)有所幫助。
相關(guān)文章
java Bean與json對(duì)象間的轉(zhuǎn)換實(shí)例講解
在本篇文章里小編給大家整理的是關(guān)于java Bean與json間的轉(zhuǎn)換的實(shí)例內(nèi)容,有需要的朋友們吧可以學(xué)習(xí)參考下。2020-01-01Shell重啟SpringBoot項(xiàng)目腳本的示例代碼(含服務(wù)守護(hù))
本文介紹了如何使用?Bash?腳本來(lái)管理和守護(hù)運(yùn)行服務(wù),將展示一個(gè)示例腳本,該腳本可以停止、啟動(dòng)和守護(hù)運(yùn)行一個(gè)服務(wù),并提供了相應(yīng)的解釋和用法說(shuō)明,文章通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11java求100以內(nèi)的素?cái)?shù)示例分享
素?cái)?shù)是指因數(shù)只有1和本身的數(shù)字,這篇文章主要介紹了java求100以內(nèi)的素?cái)?shù)示例,需要的朋友可以參考下2014-03-03Java多線程Callable和Future接口區(qū)別
這篇文章主要介紹了Java多線程Callable和Future接口區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Java實(shí)現(xiàn)word/pdf轉(zhuǎn)html并在線預(yù)覽
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)word、pdf文件轉(zhuǎn)html并在線預(yù)覽的功能,文中的示例代碼講解詳細(xì),需要的可以參考一下2023-05-05詳解springboot使用異步注解@Async獲取執(zhí)行結(jié)果的坑
本文主要介紹了springboot使用異步注解@Async獲取執(zhí)行結(jié)果的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08SpringBoot整合Docker實(shí)現(xiàn)一次構(gòu)建到處運(yùn)行的操作方法
本文講解的是 SpringBoot 引入容器化技術(shù) Docker 實(shí)現(xiàn)一次構(gòu)建到處運(yùn)行,包括鏡像構(gòu)建、Docker倉(cāng)庫(kù)搭建使用、Docker倉(cāng)庫(kù)可視化UI等內(nèi)容,需要的朋友可以參考下2022-10-10Java實(shí)現(xiàn)提取不重復(fù)的整數(shù)實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)提取不重復(fù)的整數(shù)實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12