这几天打算认真从新学习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/
分享到:
相关推荐
在Hibernate中配置Proxool连接池
proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解
Hibernate Proxool连接池配置总结及常遇问题
项目实用的proxool连接池配置文件,每个标签都有注释,可以直接拿来使用
java使用proxool连接mysql数据库 java使用proxool连接mysql数据库,能直接运行,很方便
proxool-0.9.1(my).jar 包是我修改了proxool-0.9.1后的jar包,修改后可以完全支持spring配置,并添加了charSet配置属性,用于配置数据库链接的设置默认字符集,并且解决了proxool数据库连接池报如下错误的问题:...
NULL 博文链接:https://12345678.iteye.com/blog/718296
解决mysql数据库8小时连接时限问题,方便配置Tomcat服务器,内有详细配置,易学习
-- 连接池的别名 --> <alias>DBPool</alias> - <!-- proxool只能管理由自己产生的连接 --> <driver-url>jdbc:sqlserver://localhost:1433;dataBaseName=books</driver-url> - <!-- JDBC驱动程序 --> ...
proxool连接池使用详细说明,proxool连接池使用详细说明,proxool连接池使用详细说明。
proxool数据库连接池配置.doc
博文链接:https://log-cd.iteye.com/blog/199482
连接池配置文件 博文链接:https://yanghaiskys.iteye.com/blog/215424
本项目采用当前主流的MVC和IOC框架spring 3、优秀的ORM框架hibernate和超级厉害的proxool数据库连接池。这个工程demo,是本人在企业应用中的项目缩影,绝对实用于企业的应用。 适合朋友: 1.一直用单独的servlet和...
proxool 数据库连接池用户名、密码加密处理,文件里面包含可直接使用加密的jar以及相关使用说明。
Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP 在配置连接池时需要注意的有三点: 一、Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个连接池存在...
Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP。在Hibernate连接池配置时需要注意的有三点: 一、Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个...
关于proxool数据库连接池的配置,文档,资料说明。
Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP。在配置连接池时需要注意的有三点: 一、Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个连接池存在...
基于ssh的proxool连接池配置,希望可以帮助到想了解proxool连接池配置的朋友