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

 更新时间:2016年03月24日 14:26:40   作者:夹克鹏  
这篇文章主要介绍了扩展Hibernate使用自定义数据库连接池的方法,涉及Hibernate数据库操作扩展的相关技巧,需要的朋友可以参考下

本文实例讲述了扩展Hibernate使用自定义数据库连接池的方法。分享给大家供大家参考,具体如下:

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

由于我们不是在产品刚开始开发就加入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程序设计有所帮助。

相关文章

  • Java Proxy机制详细解读

    Java Proxy机制详细解读

    这篇文章主要介绍了Java Proxy机制详细解读,还是非常不错的,这里分享给大家,需要的朋友可以参考下。
    2017-10-10
  • SpringBoot如何使用Scala进行开发的实现

    SpringBoot如何使用Scala进行开发的实现

    这篇文章主要介绍了SpringBoot如何使用Scala进行开发的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • java实现选择排序算法

    java实现选择排序算法

    本篇文章介绍直接选择排序算法的JAVA实现。直接选择排序算法的基本思想是:n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果
    2015-04-04
  • Java实现获取Excel中的表单控件

    Java实现获取Excel中的表单控件

    Excel中可通过【开发工具】菜单栏下插入表单控件,如文本框、单选按钮、复选框、组合框等等。本文将利用Java实现获取Excel中的表单控件,需要的可以参考一下
    2022-05-05
  • java ZXing生成二维码及条码实例分享

    java ZXing生成二维码及条码实例分享

    本文分享了java ZXing生成二维码及条码的实例代码,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • mybatis中嵌套查询的使用解读

    mybatis中嵌套查询的使用解读

    这篇文章主要介绍了mybatis中嵌套查询的使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 深入了解java-jwt生成与校验

    深入了解java-jwt生成与校验

    这篇文章主要介绍了深入了解java-jwt生成与校验,Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。,需要的朋友可以参考下
    2019-06-06
  • 约定优于配置_动力节点Java学院整理

    约定优于配置_动力节点Java学院整理

    以前做项目,总是写Ant配置文件,满足于自己更灵活的配置,而没有去思考,这么做到底值不值得
    2017-08-08
  • Java中去除字符串中所有空格的几种方法

    Java中去除字符串中所有空格的几种方法

    这篇文章介绍了Java中去除字符串中所有空格的几种方法,有需要的朋友可以参考一下
    2013-07-07
  • SpringFramework应用接入Apollo配置中心过程解析

    SpringFramework应用接入Apollo配置中心过程解析

    这篇文章主要介绍了SpringFramework应用接入Apollo配置中心过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论