首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

扩张Hibernate使用自定义数据库连接池

2012-12-24 
扩展Hibernate使用自定义数据库连接池在Hibernate的过程中往往碰到这样的问题:我们现成的产品本来已使用自

扩展Hibernate使用自定义数据库连接池

        在Hibernate的过程中往往碰到这样的问题:我们现成的产品本来已使用自有的数据库连接池,同时使用Hibernate的话在Hibernate配置中也得配置数据库连接信息,这样就需要在两个地方维护数据库连接信息,维护起来感觉相当别扭。

        由于我们不是在产品刚开始开发就加入Hibernate的,所以不合适让产品直接使用Hibernate的连接池,只好让Hibernate来使用产品自有的连接池,还好Hibernate已提供了连接池的扩展接口:ConnectionProvider。

        Hibernate本身是通过ConnectionProvider接口来实现管理数据库连接的。例如其自带的C3P0ConnectionProvider,ProxoolConnectionProvider等,我们编写一个实现ConnectionProvider接口的类,在Hibernate的配置文件中将相关参数改成该类就OK,相关代码如下:

        hibernate.cfg.xml中用以下代码替代之前的数据库连接信息配置:,
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{@Overridepublic void close() throws HibernateException {}@Overridepublic void closeConnection(Connection connection) throws SQLException {                //关闭连接ConnectionManager.close(connection);}@Overridepublic void configure(Properties properties) throws HibernateException {}@Overridepublic Connection getConnection() throws SQLException {                //使用产品的数据库连接池获取连接return ConnectionManager.getConnection();}@Overridepublic boolean supportsAggressiveRelease() {return false;}}


热点排行