`

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


hibernate.cfg.xml:

 

 

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
 
	 	<!-- 连接池配置测试 -->
	 	<property name="proxool.pool_alias">DBPool</property>
	 	<property name="proxool.xml">proxool.cfg.xml</property>
	 	<property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
	 	

		<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="hbm2ddl.auto">update</property>
		<property name="current_session_context_class">thread</property>
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
		
		<mapping resource="com/liberd/hibernate/model/User.hbm.xml" />
	</session-factory>
</hibernate-configuration>
 

 

这里做一些简单的说明和注意:

(1) connection.provider_class定义Hibernate的连接加载类,这里Proxool连接池是用org.hibernate.connection.ProxoolConnectionProvider ,不同的连接池有不同的加载类,可以查阅Hibernate文档获取相关信息。(在Hibernate3.6.0Final发布的压缩包中project/etc/hibernate.properties中可以查到Hibernate提供的几个连接池的加载类。)

(2) proxool.pool_alias这里就是用我们上面提到的连接池的别名。这个应该与proxool.cfg.xml中的<alias>中的内容应该保持一致。

(3) proxool.xml是向Hibernate声明连接池的配置文件位置,可以用相对或绝对路径,用相对路径时要注意一定在要Path范围内!不然会抛出异常。这里的文件名一定要和Proxool中的文件名保持一致。

(4) dialect是声明SQL语句的方言

(5) show_sql定义是否显示Hibernate生成的SQL语言,一般在调试阶段设为true,完成后再改成false,这样有利于调试。

(6) format_sql定义是否格式化显示SQL语句,格式化后比较容易阅读。不过也比较占用屏幕空间。

(7) <mapping >资源文件映射

(8) 一位网友说在proxool.cfg.xml的配置文件中不能有中文注释,在我的系统中测试了。没有出现问题。不过,为了谨慎起见,也建议大家多多注意!

 

 

做本实验时,参考了以下几个连接中的文章,再次做出感谢:

 

http://gcgmh.iteye.com/blog/425864

 

http://nicedayyep.iteye.com/blog/89759

 

http://blog.sina.com.cn/s/blog_4afbea4601008h0f.html

 

 

更多内容,请见我的博客:“地瓜哥”,http://www.diguage.com/

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    在Hibernate中配置Proxool连接池

    本篇将详细介绍如何在Hibernate中配置Proxool连接池。 首先,我们需要在Spring的配置文件`applicationContext.xml`中设置SessionFactory Bean。SessionFactory是Hibernate的核心组件,它负责创建Session对象,而...

    配置Hibernate使用Proxool连接池

    2. 配置Hibernate:在Hibernate的主配置文件(通常是hibernate.cfg.xml)中,需要定义数据源,指定使用Proxool连接池。例如: ```xml &lt;hibernate-configuration&gt; ... &lt;property name="hibernate.connection....

    使用数据库连接池proxool配置mysql数据库

    总结,使用Proxool配置MySQL数据库连接池,不仅可以解决8小时连接超时问题,还可以提升应用程序的性能和稳定性。通过详细配置Proxool,我们可以灵活地调整连接池参数以适应不同应用场景的需求,并通过集成到Tomcat,...

    Hibernate Proxool连接池配置总结及常遇问题

    **Hibernate Proxool...正确配置和使用Hibernate Proxool连接池对于优化Java应用程序的性能至关重要。理解并掌握Proxool的各项配置参数,以及在遇到问题时能及时诊断和解决,能够帮助我们构建更加稳定和高效的系统。

    Spring+Hibernate+Proxool连接池

    标题 "Spring+Hibernate+Proxool连接池" 涉及到的是在Java Web开发中,如何使用Spring框架集成Hibernate ORM框架,并结合Proxool作为数据库连接池的技术实践。这通常是为了提高应用性能,有效管理和复用数据库连接,...

    proxool数据库连接池实例(带监控功能)

    Proxool维护一个连接池,当应用程序需要数据库连接时,不会直接创建新的物理连接,而是从池中获取一个已经存在的连接或者等待其他线程归还连接。当连接不再使用时,会返回到连接池,而不是关闭,这样避免了频繁的...

    hibernate3+ proxool-0.9.1配置 和proxool-0.9.1.jar

    标题中的“hibernate3+ proxool-0.9.1配置”涉及到的是在Java开发中,使用Hibernate3 ORM框架与Proxool连接池的整合配置。Hibernate3是一款流行的持久层框架,它允许开发者用面向对象的方式来操作数据库,而Proxool...

    java使用proxool连接mysql数据库

    下面将详细介绍如何在 Java 中使用 Proxool 来连接 MySQL 数据库。 首先,我们需要了解 Proxool 的基本概念。Proxool 是 Proxy + Pool 的组合,意味着它通过代理机制管理数据库连接池。它在应用和数据库之间创建了...

    proxool连接池配置文件

    项目实用的proxool连接池配置文件,每个标签都有注释,可以直接拿来使用

    proxool连接池配置详解

    - **配置细节**:通过配置JMX代理ID和其他相关信息,可以在运行时监控和管理Proxool连接池的状态。 - **示例配置**: ```properties jmx=jmx-agent-id jmx-agent-id=my-jmx-agent jndi-name=java:jboss/data...

    proxool连接池使用详细说明

    总的来说,Proxool连接池提供了一种有效管理数据库连接的方法,通过合理的配置和使用,能显著提升应用程序的性能和稳定性。不过,随着技术的发展,可能需要考虑采用更现代、更活跃维护的连接池解决方案。

    基于ssh的proxool连接池配置

    总之,基于SSH的Proxool连接池配置涉及到Spring、Hibernate和Proxool之间的协作,通过这种方式,我们可以有效地管理和优化数据库连接,提高应用程序的性能和稳定性。在实际开发中,需要根据项目需求调整配置参数,以...

    Hibernate 联接池 proxool例子和jar包

    综上所述,这个"Hibernate dbpool proxool例子和jar包"提供的内容应该包含了如何在Hibernate项目中配置和使用Proxool连接池的示例代码以及所需的jar包,对于学习和实践Hibernate与Proxool的结合使用非常有帮助。...

    hibernate配置连接池大全

    连接池是数据库连接的一种管理机制,它预先创建并维护一定数量的数据库连接,当应用程序需要时可以从池中获取,使用完毕后归还给池而不是直接关闭,这样可以避免频繁地创建和销毁连接,提高了数据库操作的性能和系统...

    Struts2+spring+hibernate中的proxool连接池配置

    本文将详细介绍如何在Struts2+Spring+Hibernate的环境中配置Proxool连接池。 首先,理解Proxool的工作原理。Proxool是一个基于池化的JDBC代理,它维护着一个数据库连接池,当应用需要访问数据库时,可以从池中获取...

    hibernate自动重新连接数据库proxool的使用

    本文将详细介绍如何在`Hibernate`中配置和使用`Proxool`进行自动重新连接数据库。 首先,我们需要理解`Proxool`的工作原理。`Proxool`维护了一个数据库连接的池,当应用程序需要数据库连接时,可以从池中获取;使用...

    关于proxool数据库连接池的配置集合

    数据库连接池是现代应用程序开发中的重要组成部分,它有效地管理和复用数据库连接,从而提高系统性能并减少资源消耗。Proxool是Apache软件基金会的一个开源项目,提供了一个轻量级、高性能的数据库连接池解决方案。...

    mysqlproxool连接池

    MySQL ProxyPool,通常简称为Proxool,是一个开源的数据库连接池实现,它为Java应用程序提供了高效的数据库连接管理。在Java应用中,数据库连接池是关键的组件之一,它能够有效地管理和复用数据库连接,从而提高系统...

    proxool连接池用户名密码加密

    2. **使用说明**:这份文档详细阐述了如何在Proxool连接池配置中使用加密的用户名和密码。它可能涵盖了以下步骤: - **加密过程**:说明如何使用提供的jar文件对数据库的用户名和密码进行加密,生成可以安全存储的...

Global site tag (gtag.js) - Google Analytics