<!-- C3P0数据源管理连接池 -->
<?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>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- JDBC connection pool (use the built-in)
不使用内建连接词,hibernate参考手册的一段
Hibernate 自带的连接池算法相当不成熟。它只是为了让你快些上手,并不适合用于产品系统或性能测试中。
出于最佳性能和稳定性考虑你应该使用第三方的连接池。只需要用特定连接池的设置替换 hibernate.connection.pool_size 即可。
<property name="connection.pool_size">5</property>
-->
<!-- 自建c3p0连接池,要加入c3p0-0.9.1.jar-->
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">1800</property>
<!-- 最大的PreparedStatement的数量 -->
<property name="hibernate.c3p0.max_statements">100</property>
<!--配置默认schema
<property name="hibernate.default_schema" value="myschema"/>
-->
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="net/hnspi/entity/Record.hbm.xml" />
<mapping resource="net/hnspi/entity/Account.hbm.xml" />
</session-factory>
</hibernate-configuration>
数据源配置:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/">
<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver"
type="javax.sql.DataSource"
name="jdbc/datasuourcePool"
url="jdbc:mysql://127.0.0.1:3306/hibernate?useUnicode=true&characterEncoding=GBK&autoReconnect=true"
username="zhangh"
password="123456"
logAbandoned="true"
maxActive="5"
maxIdle="2"
maxWait="5000"
removeAbandoned="true"
removeAbandonedTimeout="300"
testOnReturn="true"
testWhileIdle="true"
validationQuery="select now()"/>
</Context> 容器管理连接池,连接通过数据源取得
注意:数据库连接jar包要放到Tomcat(小弟用的是tomcat)的lib目录,不然会报找不到Driver的错误。我想原因大概是由容器管理连接池,就是在服务器启动的时候,就会建立好连接池,这个时候肯定是需要数据库连接的jar包。也就是连接的jar包在应用运行之前就已经使用到了,所以放在应用的lib下也不会解决问题。
<?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>
<!-- 交由容器管理数据库连接池 -->
<property name="connection.datasource">java:comp/env/jdbc/datasuourcePool</property>
<property name="connection.provider_class">org.hibernate.connection.DatasourceConnectionProvider</property>
<!-- 配置默认schema <property name="hibernate.default_schema" value="myschema"/> -->
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<!-- 配置实体映射 -->
<mapping resource="com/akwolf/bean/Event.hbm.xml"/>
</session-factory>
</hibernate-configuration>
本文介绍如何在Hibernate中配置C3P0连接池,包括基本连接设置、C3P0参数配置及容器管理连接池的方法。同时,提供具体的XML配置示例。
1754

被折叠的 条评论
为什么被折叠?



