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

