擴展Hibernate使用自定義數據庫連接池的方法
本文實例講述了擴展Hibernate使用自定義數據庫連接池的方法。分享給大家供大家參考,具體如下:
在Hibernate的過程中往往碰到這樣的問題:我們現成的產品本來已使用自有的數據庫連接池,同時使用Hibernate的話在Hibernate配置中也得配置數據庫連接信息,這樣就需要在兩個地方維護數據庫連接信息,維護起來感覺相當別扭。
由于我們不是在產品剛開始開發(fā)就加入Hibernate的,所以不合適讓產品直接使用Hibernate的連接池,只好讓Hibernate來使用產品自有的連接池,還好Hibernate已提供了連接池的擴展接口:ConnectionProvider。
Hibernate本身是通過ConnectionProvider接口來實現管理數據庫連接的。例如其自帶的C3P0ConnectionProvider,ProxoolConnectionProvider等,我們編寫一個實現ConnectionProvider接口的類,在Hibernate的配置文件中將相關參數改成該類就OK,相關代碼如下:
hibernate.cfg.xml中用以下代碼替代之前的數據庫連接信息配置:
<!-- 自定義-使用NMS產品的連接池 --> <property name="hibernate.connection.provider_class"> com.shine.sourcedesk.jbpm.NmsConnectionProvider </property>
實現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使用產品的ConnectionManager
* @author JiangKunpeng
*
*/
public class NmsConnectionProvider implements ConnectionProvider{
@Override
public void close() throws HibernateException {
}
@Override
public void closeConnection(Connection connection) throws SQLException {
//關閉連接
ConnectionManager.close(connection);
}
@Override
public void configure(Properties properties) throws HibernateException {
}
@Override
public Connection getConnection() throws SQLException {
//使用產品的數據庫連接池獲取連接
return ConnectionManager.getConnection();
}
@Override
public boolean supportsAggressiveRelease() {
return false;
}
希望本文所述對大家基于Hibernate框架的Java程序設計有所幫助。
相關文章
mybatis?獲取更新(update)記錄的id之<selectKey>用法說明
這篇文章主要介紹了mybatis?獲取更新(update)記錄的id之<selectKey>用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
SpringShell命令行之交互式Shell應用開發(fā)方式
本文將深入探討Spring Shell的核心特性、實現方式及應用場景,幫助開發(fā)者掌握這一強大工具,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04

