擴(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等,我們編寫(xiě)一個(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)文章
mybatis動(dòng)態(tài)生成sql語(yǔ)句的實(shí)現(xiàn)示例
在MyBatis中,動(dòng)態(tài)SQL是一個(gè)非常重要的特性,它允許我們根據(jù)條件動(dòng)態(tài)地生成SQL語(yǔ)句,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
mybatis?獲取更新(update)記錄的id之<selectKey>用法說(shuō)明
這篇文章主要介紹了mybatis?獲取更新(update)記錄的id之<selectKey>用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
Effective Java 在工作中的應(yīng)用總結(jié)
《Effective Java》是一本經(jīng)典的 Java 學(xué)習(xí)寶典,值得每位 Java 開(kāi)發(fā)者閱讀。下面文章即是將書(shū)中和平日工作較密切的知識(shí)點(diǎn)做了部分總結(jié),需要的朋友可以參考下2021-09-09
SpringShell命令行之交互式Shell應(yīng)用開(kāi)發(fā)方式
本文將深入探討Spring Shell的核心特性、實(shí)現(xiàn)方式及應(yīng)用場(chǎng)景,幫助開(kāi)發(fā)者掌握這一強(qiáng)大工具,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
使用mongoTemplate實(shí)現(xiàn)多條件加分組查詢方式
這篇文章主要介紹了使用mongoTemplate實(shí)現(xiàn)多條件加分組查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06

