日期:2014-05-16  浏览次数:20803 次

Hibernate3.6中直接连接MySQL和使用Proxool连接池连接MySQL的配置对比

这几天打算认真从新学习Hibernate,自己也做个总结。以前总是说使用连接池,但从没有用过。现在有机会了实验一下。本实验重点测试一下,在是否使用Proxool连接池时,Hibernate的配置文件的前后变化。和大家分享一下。希望各位网友指正。

?

?

第一:直接连接数据库

?

在Hibernate中直接配置MySQL数据库的连接的配置文件:

?

hibernate.cfg.xml:

?

?

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<!-- Database connection settings -->
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/bkhibernate</property>
		<property name="connection.username">root</property>
		<property name="connection.password">adai123</property>


		<!-- SQL dialect(方言)用于指定何种数据库,可以在Hibernate的文档中查到 -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

		<!-- Enable Hibernate's automatic session context management -->
		<property name="current_session_context_class">thread</property>
		

		<!-- Disable the second-level cache  二级缓存,优化Hibernate时再说!-->
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

		<!-- Echo all executed SQL to stdout 是否显示生成的SQL生成语句!开发时,一定要显示,方便调试! -->
		<property name="show_sql">true</property>

		<!--
			Drop and re-create the database schema on startup hbm是Hibernate
			Maping ddl是数据定义语句 这句话的意思是:是否要Hibernate指定映射成数据定义语句。
		-->
		<!--  <property name="hbm2ddl.auto">update</property> -->

		<mapping resource="com/liberd/hibernate/model/User.hbm.xml" />

	</session-factory>
</hibernate-configuration>

?

?

第二:使用Proxool连接池连接数据库时的配置:?

?

使用Proxool连接池时,需要在CLASSPATH中添加一个Proxool配置文件proxool.cfg.xml(注意:这个文件名可以随意命名,不过建议遵循“见名知意”的原则),来配置Proxool连接到MySQL的信息:

?

proxool.cfg.xml :

?

?

<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
	<proxool>
		<alias>DBPool</alias>
		<driver-url>jdbc:mysql://localhost:3306/bkhibernate</driver-url>
		<driver-class>com.mysql.jdbc.Driver</driver-class>
		<driver-properties>
			<property name="user" value="root" />
			<property name="password" value="adai123" />
		</driver-properties>
		
		<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->
		<house-keeping-sleep-time>90000</house-keeping-sleep-time>
		
		<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->
		<maximum-new-connections>20</maximum-new-connections>
		
		<!-- 最少保持的空闲连接数-->
		<prototype-count>5</prototype-count>
		
		<!--
			允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定
		-->
		<maximum-connection-count>100</maximum-connection-count>
		
		<!-- 最小连接数-->
		<minimum-connection-count>10</minimum-connection-count>
	</proxool>
</something-else-entirely>

?

这时,hibernate.cfg.xml的配置信息就不需要具体的连接数据库的配置信息了。修改后的hibernate.cfg.xml