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