现在的位置: 首页 > 综合 > 正文

hibernate.cfg.xml

2013年12月07日 ⁄ 综合 ⁄ 共 9752字 ⁄ 字号 评论关闭

Hibernate的描述文件可以是一个properties属性文件,也可以是一个xml文件。下面讲一下Hibernate.cfg.xml的配置。配置格式如下:

1. 配置数据源

       在Hibernate.cfg.xml中既可以配置JDBC,也可以配置JNDI。在本小节中讲述数据源如何配置。

 

hibernate.cfg.xml   

  1.   
  2. <?xml version="1.0" encoding="UTF-8"?>   
  3. <!DOCTYPE hibernate-configuration PUBLIC   
  4. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  5. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">   
  6.   
  7. <hibernate-configuration>   
  8.   
  9. <session-factory>   
  10.   
  11. <!-- 各属性的配置-->   
  12.   
  13. <!—为true表示将Hibernate发送给数据库的sql显示出来 -->   
  14.   
  15. <property name="show_sql">true</property>   
  16.   
  17. <!-- SQL方言,这边设定的是MySQL -->   
  18.   
  19. <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>   
  20.   
  21. <!-- 一次读取的数据库记录数 -->   
  22.   
  23. <property name="jdbc.fetch_size">50</property>   
  24.   
  25. <!-- 设定对数据库进行批量删除 -->   
  26.         <property name="jdbc.batch_size">30</property>   
  27.   
  28. <!—下面为JNDI的配置 -->   
  29.   
  30. <!-- 数据源的名称 -->   
  31.   
  32. <property name="connection.datasource">java:comp/env/jdbc/datasourcename</property>   
  33.   
  34. <!-- Hibernate的连接加载类 -->   
  35.   
  36. <property name="connection.provider_class">com.xyls.connection.DatasourceConnectionProvider</property>   
  37.   
  38. <property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>   
  39.   
  40. <!—映射文件 -->   
  41.   
  42. <mapping resource="com/xyls/pojo/User.hbm.xml"/>   
  43.   
  44. <mapping resource="com/xyls/pojo/Org.hbm.xml"/>   
  45.     </session-factory>   
  46. </hibernate-configuration>  

2. c3p0连接池

       c3p0连接池是Hibernate推荐使用的连接池,若需要使用该连接池时,需要将c3p0的jar包加入到classpath中。c3p0连接池的配置示例如下:

hibernate.cfg.xml

  1. <?xml version="1.0" encoding="UTF-8"?>   
  2.   
  3. <!DOCTYPE hibernate-configuration PUBLIC   
  4.   
  5. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  6.   
  7. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">   
  8.   
  9. <hibernate-configuration>   
  10.   
  11. <session-factory>   
  12.   
  13.         <!-- 显示实际操作数据库时的SQL -->   
  14.   
  15.         <property name="show_sql">true</property>   
  16.   
  17.         <!-- SQL方言,这边设定的是MySQL -->   
  18.   
  19.         <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>   
  20.   
  21.         <!--驱动程序 -->   
  22.   
  23.         <property name="connection.driver_class">……</property>   
  24.   
  25.         <!-- JDBC URL -->   
  26.   
  27.         <property name="connection.url">……</property>   
  28.   
  29.         <!-- 数据库用户名 -->   
  30.   
  31.         <property name="connection.username">root</property>   
  32.   
  33.         <!-- 数据库密码 -->   
  34.   
  35.         <property name="connection.password">***</property>   
  36.   
  37.         <property name="c3p0.min_size">5</property>   
  38.   
  39.         <property name="c3p0.max_size">20</property>   
  40.   
  41.         <property name="c3p0.timeout">1800</property>   
  42.   
  43.         <property name="c3p0.max_statements">50</property>   
  44.   
  45.         <!-- 对象与数据库表格映像文件 -->   
  46.   
  47.        <mapping resource="com/xyls/pojo/User.hbm.xml"/>   
  48.   
  49.        .....  
  50.     </session-factory>   
  51.   
  52. </hibernate-configuration>  

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

3. proxool连接池

       proxool跟c3p0以及dbcp不一样,它是自己生成连接的,因此连接信息放在proxool配置文件中。使用它时,需要将proxool-0.8.3.jar加入到classespath中。配置举例如下:

hibernate.cfg.xml

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2.   
  3. <!DOCTYPE hibernate-configuration PUBLIC   
  4.   
  5. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  6.   
  7. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">   
  8.   
  9. <hibernate-configuration>   
  10.   
  11. <session-factory>   
  12.   
  13.         <!-- 显示实际操作数据库时的SQL -->   
  14.   
  15.         <property name="show_sql">true</property>   
  16.   
  17.         <!-- SQL方言,这边设定的是MySQL -->   
  18.   
  19.         <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>   
  20.   
  21.         <!—proxool的配置 -->   
  22.   
  23.        <property name="proxool.pool_alias">pool1</property>    
  24.   
  25.        <property name="proxool.xml">ProxoolConf.xml</property>    
  26.   
  27.     <property name="connection.provider_class">com.xyls.hibernate.connection.ProxoolConnectionProvider</property>   
  28.   
  29.        <!-- 对象与数据库表格映像文件 -->   
  30.   
  31.        <mapping resource="com/amigo/pojo/User.hbm.xml"/>   
  32.   
  33.        <mapping resource="com/amigo/pojo/Org.hbm.xml"/>   
  34.   
  35.   </session-factory>   
  36.   
  37. </hibernate-configuration> 

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

ProxoolConf.xml

  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <!-- the proxool configuration can be embedded within your own application's.    
  3. Anything outside the "proxool" tag is ignored. -->    
  4. <something-else-entirely>    
  5. <proxool>    
  6. <alias>pool1</alias>    
  7. <!--proxool只能管理由自己产生的连接-->   
  8.   
  9. <!-- 驱动的url-->   
  10.   
  11. <!-- jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=GBK-->   
  12.   
  13. <driver-url>… </driver-url>    
  14.   
  15. <!-- 驱动类,eg. com.mysql.jdbc.Driver-->   
  16.   
  17. <driver-class>… </driver-class>    
  18. <driver-properties>    
  19.   
  20. <!-- 数据库用户名,eg. value为root-->   
  21.   
  22. <property name="user" value="…"/>    
  23.   
  24. <!-- 数据库密码,eg. value为root-->   
  25.   
  26. <property name="password" value="…."/>    
  27. </driver-properties>    
  28. <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->    
  29. <house-keeping-sleep-time>90000</house-keeping-sleep-time>    
  30. <!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->    
  31. <maximum-new-connections>20</maximum-new-connections>    
  32. <!-- 最少保持的空闲连接数-->    
  33. <prototype-count>5</prototype-count>    
  34. <!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->    
  35. <maximum-connection-count>100</maximum-connection-count>    
  36. <!-- 最小连接数-->    
  37. <minimum-connection-count>10</minimum-connection-count>    
  38. </proxool>    
  39. </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建立连接的。

在hibernate2.0中的配置建立如下:

hibernate.cfg.xml

  1. <?xml version="1.0" encoding="UTF-8"?>   
  2.   
  3. <!DOCTYPE hibernate-configuration PUBLIC   
  4.   
  5. "-//Hibernate/Hibernate Configuration DTD 2.0//EN"  
  6.   
  7. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">   
  8.   
  9. <hibernate-configuration>   
  10.   
  11. <session-factory>   
  12.   
  13.         <!-- 显示实际操作数据库时的SQL -->   
  14.   
  15.         <property name="show_sql">true</property>   
  16.   
  17.         <!-- SQL方言,这边设定的是MySQL -->   
  18.   
  19.         <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>   
  20.   
  21.         <!--驱动程序 -->   
  22.   
  23.         <property name="connection.driver_class">……</property>   
  24.   
  25.         <!-- JDBC URL -->   
  26.   
  27.         <property name="connection.url">……</property>   
  28.   
  29.         <!-- 数据库用户名 -->   
  30.   
  31.         <property name="connection.username">…</property>   
  32.   
  33.         <!-- 数据库密码, eg. root-->   
  34.   
  35.         <property name="connection.password">…</property>   
  36.   
  37.        <property name="dbcp.maxActive">100</property>    
  38.   
  39.        <property name="dbcp.whenExhaustedAction">1</property>   
  40.   
  41.        <property name="dbcp.maxWait">60000</property>    
  42.   
  43.        <property name="dbcp.maxIdle">10</property>    
  44.   
  45.        <property name="dbcp.ps.maxActive">100</property>    
  46.   
  47.        <property name="dbcp.ps.whenExhaustedAction">1</property>    
  48.   
  49.        <property name="dbcp.ps.maxWait">60000</property>    
  50.   
  51.        <property name="dbcp.ps.maxIdle">10</property>   
  52.   
  53.         <!-- 对象与数据库表格映像文件 -->   
  54.   
  55.        <mapping resource="com/xyls/pojo/User.hbm.xml"/>   
  56.   
  57.        
  58.     </session-factory>   
  59.   
  60. </hibernate-configuration>  

 5. MySql连接配置

在hibernate中,可以配置很多种数据库,例如MySql、Sql Server和Oracle,MySql的配置举例如下:

hibernate.cfg.xml

  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE hibernate-configuration PUBLIC   
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">   
  5.   
  6. <hibernate-configuration>   
  7.   
  8. <session-factory>   
  9.   
  10. <!-- 各属性的配置-->   
  11.   
  12. <!—为true表示将Hibernate发送给数据库的sql显示出来 -->   
  13.   
  14. <property name="show_sql">true</property>   
  15.   
  16. <!-- SQL方言,这边设定的是MySQL -->   
  17.   
  18. <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>   
  19.   
  20. <!-- 一次读的数据库记录数 -->   
  21.   
  22. <property name="jdbc.fetch_size">50</property>   
  23.   
  24. <!-- 设定对数据库进行批量删除 -->   
  25.         <property name="jdbc.batch_size">30</property>   
  26.   
  27. <!--驱动程序-->   
  28.   
  29. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>   
  30.   
  31. <!-- JDBC URL -->   
  32.   
  33. <property name="connection.url">jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=gb2312</property>   
  34.   
  35. <!-- 数据库用户名-->   
  36.   
  37. <property name="connection.username">root</property>   
  38.   
  39. <!-- 数据库密码-->   
  40.   
  41. <property name="connection.password">root</property>   
  42.   
  43. <!—映射文件 -->   
  44.   
  45. <mapping resource="com/xyls/pojo/User.hbm.xml"/>   
  46.   
  47.     </session-factory>   
  48. </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一样,在此不再赘述。内容如下:

<!--驱动程序-->

  1. <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>   
  2.   
  3. <!-- JDBC URL -->   
  4.   
  5. <property name="connection.url">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname</property>   
  6.   
  7. <!-- 数据库用户名-->   
  8.   
  9. <property name="connection.username">sa</property>   
  10.   
  11. <!-- 数据库密码-->   
  12.   
  13. <property name="connection.password"></property>  

上例的驱动类使用的是jtds的驱动类,因此读者需要将jtds的jar包(eg. jtds-1.2.jar)加入到classpath中。

7. Oracle连接配置

本小节讲述一下Sql Server数据库的hibernate连接设置,在此只给出连接部分的内容,其余部分与2.2.1.5一样,在此不再赘述。内容如下:

<!--驱动程序-->

  1. <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>   
  2.   
  3. <!-- JDBC URL -->   
  4.   
  5. <property name="connection.url">jdbc:oracle:thin:@localhost:1521:dbname</property>   
  6.   
  7. <!-- 数据库用户名-->   
  8.   
  9. <property name="connection.username">test</property>   
  10.   
  11. <!-- 数据库密码-->   
  12.   
  13. <property name="connection.password">test</property>  

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

抱歉!评论已关闭.