您的当前位置:首页正文

hibernate配置数据库连接池的三种方法

2021-08-03 来源:好走旅游网
 数据库连接池的概念(是什么,做什么用的,有什么好处)

首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了。 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放。如果频繁的数据库操作,就会导致性能很低。连接池的出现,为开发过程提供了一个很好的管理平台。当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池,将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

而Hibernate的出现把连接池的使用引入了一个新的利用方式,让你充分享受配置化给开发带来的便利。

1 C3P0 (以验证可用)

只需在hibernate.cfg.xml中加入

omdssd_admin omdssd_hskj

jdbc:oracle:thin:@10.142.1.138:1521:omds

oracle.jdbc.driver.OracleDriver

org.hibernate.dialect.Oracle9Dialect

true true

org.hibernate.connection.C3P0ConnectionProvider

5 //连接池中数据库连接的最小数目

30 //连接池中数据库连接的最大数目

1800 //设定数据库连接的过期时间,以秒为单位

50 //可以被缓存的PreparedStatement实例的最大数目。缓存适量的PreparedStatement实例,能够大大提高Hibernate的性能。

120//在使数据库连接自动生效之前处于空闲状态的时间,以秒为单位

oracle10g_112

2 ……………………………………..

还有在classespath中加入c3p0-0.8.4.5.jar

2 dbcp(hibernate3.0中,已经不支持dbcp)

在hibernate.cfg.xml中加入

org.gjt.mm.mysql.Driver

jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK

root

8888

100 1 60000 10

100 1 60000 10

还有在classespath中加入commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar.

3 proxool (有问题,暂时不可用)

在hibernate.cfg.xml中加入:

org.hibernate.dialect.Oracle9Dialect

true true

oracle10g_112

Proxool_DB_Pool ProxoolConf.xml

org.hibernate.connection.ProxoolConnectionProvider

true

……………….

然后,在和hibernate.cfg.xml同一个目录下,加一个ProxoolConf.xml文件,内容为

Proxool_DB_Pool

jdbc:oracle:thin:@10.142.50.112:1521:omds oracle.jdbc.driver.OracleDriver

90000

20

5

100

10

并在classespath中加入proxool-0.8.3.jar 4 结论

由于在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp有BUG,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。我不知是否在dbcp最新版本中解决了这个问题,我以前在一个访问量不大的项目中用过dbcp,运行了一年多都没出现问题。不过在网上的确也有不少网友指出dbcp在大型的应用中会出现不稳定的情况。所以在真相未经证实的情况下,我觉得对dbcp持慎重的态度。

至于c3p0,有评论说它的算法不是最优的,而且,我在matrix中,见到有网友做了一个实验,在同一项目中分别用了几个常用的连接池,然后测试其性能,发现c3p0占用资源比较大,效率也不高。

所以,基于上述原因,我才花两晚的时间去研究proxool的配置,proxool不少行家推荐使用,而且暂时来说,是负面评价是最少的一个。在三星中也有项目是用proxool的。

欢迎大家就连接池的问题多研究,多多发表自己的经验心得。

因篇幅问题不能全部显示,请点此查看更多更全内容