hibernate配置文件及连接池配置

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">
 
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
 
 <session-factory>
  <!-- 数据库链接 -->
  <property name="connection.url">url</property>
  <!-- 是否设置连接编码 -->
  <property name="connection.useUnicode">true</property>
  <!-- 设置连接编码 -->
  <property name="connection.characterEncoding">UTF-8</property>
  <!-- 用户名 -->
  <property name="connection.username">user</property>
  <!-- 密码 -->
  <property name="connection.password">pass</property>
  <!-- 驱动 -->
  <property name="connection.driver_class">Driver</property>
  <!-- 数据库方言 -->
  <property name="dialect">dialect</property>
  <!-- 是否打印sql语句 -->
  <property name="show_sql">false</property>
  <!-- 打印sql语句时是否格式化为格式良好的 -->
  <property name="format_sql">false</property>
  <!-- hibernate默认连接池最大上限 -->
  <property name="hibernate.connection.pool_size">100</property>
  
  <!-- Hibernate Reference Documentation 3.3.1解释如下: -->
  <!-- Automatically validate or export schema DDL to the database when the SessionFactory is created. -->
  <!-- With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly. -->
  <!-- eg. validate | update | create | create-drop -->
  
  <!-- 其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。 -->
  <!-- create: -->
  <!-- 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。 -->
  <!-- create-drop : -->
  <!-- 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。 -->
  <!-- update: -->
  <!-- 最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。 -->
  <!-- validate : -->
  <!-- 每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。 -->
  <property name="hibernate.hbm2ddl.auto" value="update" />
 
  <!-- 连接断开问题 如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat.-->
  <property name="connection.is-connection-validation-required">true</property>
  <property name="connection.autoReconnect">true</property>
  <property name="connection.autoReconnectForPools">true</property>
  <!-- c3p0连接池 -->
  <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
  <property name="hibernate.c3p0.min_size">2</property>
  <property name="hibernate.c3p0.max_size">20</property>
  <property name="hibernate.c3p0.timeout">43200</property>
  <property name="hibernate.c3p0.max_statements">100</property>
  <property name="hibernate.c3p0.idle_test_period">1200</property>
  <property name="hibernate.c3p0.acquire_increment">2</property>
  <property name="hibernate.c3p0.validate">true</property>
  
  <!-- (A)proxool方式配置连接池,连接池的参数要看proxoolConf.xml配置文件
  <property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
  <property name="hibernate.proxool.pool_alias">proxoolPool</property>
  <property name="hibernate.proxool.xml">proxoolConf.xml</property>
  -->
 
  <!--  (B)JNDI方式的Hibernate连接池配置,需要配置tomcat下context.xml,项目下的web.xml
  <property name="connection.datasource">java:comp/env/jdbc/zhang</property>
  -->
  
 </session-factory>
 
</hibernate-configuration>
 
proxoolConf.xml配置文件的配置,与hibernate.cfg.xml配置文件中(A)对应,该配置文件主要用于配置proxool连接池:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
 <proxool>
  <!--连接池的别名 -->
  <alias>DBPool</alias>
  <!-- proxool只能管理由自己产生的连接 -->
  <driver-url>url</driver-url>    
  <!-- JDBC驱动程序 -->
  <driver-class>Driver</driver-class>
  <driver-properties>
   <property name="user" value="" />
   <property name="password" value="" />
  </driver-properties>
  <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 -->
  <house-keeping-sleep-time>90000</house-keeping-sleep-time>
  <!-- 最少保持的空闲连接数 -->
  <prototype-count>5</prototype-count>
  <!-- 最小连接数 -->
  <minimum-connection-count>10</minimum-connection-count>
  <!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
  <maximum-connection-count>100</maximum-connection-count>
  <!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 -->
  <maximum-new-connections>20</maximum-new-connections>
 </proxool>
</something-else-entirely>
 
context.xml配置文件的配置,与hibernate.cfg.xml配置文件中(B)对应,该配置文件为tomcat下的配置文件,主要用于配置JNDI方式的连接池:
<?xml version='1.0' encoding='utf-8'?>
<Context>
 
    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
 <Loader delegate="true" />
    
 <Resource 
      maxIdle="100"
      maxActive="100"
      password="root"
      username="root"
      url="jdbc:mysql://localhost:3306/test"
      driverClassname="com.mysql.jdbc.Driver"
      type="javax.sql.DataSource"
      auth="Container"
      name="jdbc/zhang"/>
</Context>
 
web.xml配置文件的配置,与hibernate.cfg.xml配置文件中(B)对应,该配置文件为项目下的web.xml文件,主要用于配置JNDI方式的连接池,与context.xml一起使用:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 
 <resource-ref>
  <res-ref-name>jdbc/zhang</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>
 
</web-app>
 
后记:c3p0和proxool都需要第三方jar包,c3p0-0.9.1.jar和proxool-0.9.1.jar,JNDI数据库连接池依赖于tomcat容器,所以测试的时候需要部署项目测试。

相关推荐