hibernate的描述文件可以是一个properties属性文件,也可以是一个xml文件。下面讲一下hibernate.cfg.xml的配置。配置格式如下:
1. 配置数据源
在hibernate.cfg.xml中既可以配置jdbc,也可以配置jndi。在本小节中讲述数据源如何配置,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>



—为true表示将hibernate发送给数据库的sql显示出来 -->

<property name="show_sql">trueproperty>



<property name="dialect">net.sf.hibernate.dialect.mysqldialectproperty>



<property name="jdbc.fetch_size">50property>


        
<property name="jdbc.batch_size">30property>

—下面为jndi的配置 -->



<property name="connection.datasource">java:comp/env/jdbc/datasourcenameproperty>



<property name="connection.provider_class">net.sf.hibernate.connection.datasourceconnectionproviderproperty>

<property name="dialect">net.sf.hibernate.dialect.sqlserverdialectproperty>

—映射文件 -->

<mapping resource="com/amigo/pojo/user.hbm.xml"/>

<mapping resource="com/amigo/pojo/org.hbm.xml"/>
    
session-factory>
hibernate-configuration>


2. c3p0连接池
c3p0连接池是hibernate推荐使用的连接池,若需要使用该连接池时,需要将c3p0的jar包加入到classpath中。c3p0连接池的配置示例如下:
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="show_sql">trueproperty>

        


        
<property name="dialect">net.sf.hibernate.dialect.mysqldialectproperty>

        


        
<property name="connection.driver_class">……property>

        


        
<property name="connection.url">……property>

        


        
<property name="connection.username">userproperty>

        


        
<property name="connection.password">passproperty>

        
<property name="c3p0.min_size">5property>

        
<property name="c3p0.max_size">20property>

        
<property name="c3p0.timeout">1800property>

        
<property name="c3p0.max_statements">50property>

        


       
<mapping resource="com/amigo/pojo/user.hbm.xml"/>

<mapping resource="com/amigo/pojo/org.hbm.xml"/>

    
session-factory>

hibernate-configuration>
在上述配置中,hibernate根据配置文件生成连接,再交给c3p0管理。

3. proxool连接池
  proxool跟c3p0以及dbcp不一样,它是自己生成连接的,因此连接信息放在proxool配置文件中。使用它时,需要将proxool-0.8.3.jar加入到classespath中。配置举例如下:
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="show_sql">trueproperty>

        


        
<property name="dialect">net.sf.hibernate.dialect.mysqldialectproperty>

—proxool的配置 -->

       
<property name="proxool.pool_alias">pool1property> 

<property name="proxool.xml">proxoolconf.xmlproperty> 

<property name="connection.provider_class">net.sf.hibernate.connection.proxoolconnectionproviderproperty>

       


       
<mapping resource="com/amigo/pojo/user.hbm.xml"/>

<mapping resource="com/amigo/pojo/org.hbm.xml"/>

  
session-factory>

hibernate-configuration>

在hibernate.cfg.xml的同目录下编写proxool的配置文件:proxoolconf.xml,该文件的配置实例如下:
proxoolconf.xml

xml version="1.0" encoding="utf-8"?> 
 
<something-else-entirely> 
<proxool> 
<alias>pool1alias> 






<driver-url>… driver-url> 



<driver-class>… driver-class> 
<driver-properties> 



<property name="user" value="…"/> 



<property name="password" value="…."/> 
driver-properties> 
 
<house-keeping-sleep-time>90000house-keeping-sleep-time> 
 
<maximum-new-connections>20maximum-new-connections> 
 
<prototype-count>5prototype-count> 
 
<maximum-connection-count>100maximum-connection-count> 
 
<minimum-connection-count>10minimum-connection-count> 
proxool> 
something-else-entirely>

4. dbcp连接池
 在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp有 bug,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。若需要使用dbcp,开发人员还需要将commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar两个jar包加入到classpath中。dbcp与c3p0一样,都是由hibernate建立连接的。
hibernate.cfg.xml

xml version="1.0" encoding="utf-8"?>

doctype hibernate-configuration public

"-//hibernate/hibernate configuration dtd 2.0//en"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>

<hibernate-configuration>

<session-factory>

        


        
<property name="show_sql">trueproperty>

        


        
<property name="dialect">net.sf.hibernate.dialect.mysqldialectproperty>

        


        
<property name="connection.driver_class">……property>

        


        
<property name="connection.url">……property>

        


        
<property name="connection.username">property>

        


        
<property name="connection.password">property>

       
<property name="dbcp.maxactive">100property> 

<property name="dbcp.whenexhaustedaction">1property>

<property name="dbcp.maxwait">60000property> 

<property name="dbcp.maxidle">10property> 

<property name="dbcp.ps.maxactive">100property> 

<property name="dbcp.ps.whenexhaustedaction">1property> 

<property name="dbcp.ps.maxwait">60000property> 

<property name="dbcp.ps.maxidle">10property>

        


       
<mapping resource="com/amigo/pojo/user.hbm.xml"/>

<mapping resource="com/amigo/pojo/org.hbm.xml"/>

    
session-factory>

hibernate-configuration>

5. mysql连接配置
在hibernate中,可以配置很多种数据库,例如mysql、sql server和oracle,mysql的配置举例如下:
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>



—为true表示将hibernate发送给数据库的sql显示出来 -->

<property name="show_sql">trueproperty>



<property name="dialect">net.sf.hibernate.dialect.mysqldialectproperty>



<property name="jdbc.fetch_size">50property>


        
<property name="jdbc.batch_size">30property>



<property name="connection.driver_class">com.mysql.jdbc.driverproperty>



<property name="connection.url">jdbc:mysql://localhost/dbname?characterencoding=gb2312property>



<property name="connection.username">rootproperty>



<property name="connection.password">rootproperty>

—映射文件 -->

<mapping resource="com/amigo/pojo/user.hbm.xml"/>

<mapping resource="com/amigo/pojo/org.hbm.xml"/>
    
session-factory>
hibernate-configuration>

上面使用的驱动类是com.mysql.jdbc.driver。需要将mysql的连接器jar包(eg. mysql-connector-java-5.0.4-bin.jar)加入到classpath中。
6. sql server连接配置
 本小节讲述一下sql server数据库的hibernate连接设置,在此只给出连接部分的内容,其余部分与2.2.1.5一样,在此不再赘述。内容如下:


<property name="connection.driver_class">net.sourceforge.jtds.jdbc.driverproperty>



<property name="connection.url">jdbc:jtds:sqlserver://localhost:1433;databasename=dbnameproperty>



<property name="connection.username">saproperty>



<property name="connection.password">property>
上例的驱动类使用的是jtds的驱动类,因此读者需要将jtds的jar包(eg. jtds-1.2.jar)加入到classpath中。
7. oracle连接配置
本小节讲述一下sql server数据库的hibernate连接设置,在此只给出连接部分的内容,其余部分与2.2.1.5一样,在此不再赘述。内容如下:


<property name="connection.driver_class">oracle.jdbc.driver.oracledriverproperty>



<property name="connection.url">jdbc:oracle:thin:@localhost:1521:dbnameproperty>



<property name="connection.username">testproperty>



<property name="connection.password">testproperty>



上例使用的驱动类为:oracle.jdbc.driver.oracledriver,开发人员需要将相关的jar包(ojdbc14.jar)加入到classpath中。