3.7. XML配置文件

另一个配置方法是在hibernate.cfg.xml文件中指定一套完整的配置. 这个文件可以当成hibernate.properties的替代。 若两个文件同时存在,它将覆盖前者的属性.

XML配置文件被默认是放在CLASSPATH的根目录下. 这是一个例子:

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <!-- 以/jndi/name绑定到JNDI的SessionFactory实例 -->
  7. <session-factory
  8. name="java:hibernate/SessionFactory">
  9. <!-- 属性 -->
  10. <property name="connection.datasource">java:/comp/env/jdbc/MyDB</property>
  11. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  12. <property name="show_sql">false</property>
  13. <property name="transaction.factory_class">
  14. org.hibernate.transaction.JTATransactionFactory
  15. </property>
  16. <property name="jta.UserTransaction">java:comp/UserTransaction</property>
  17. <!-- 映射定义文件 -->
  18. <mapping resource="org/hibernate/auction/Item.hbm.xml"/>
  19. <mapping resource="org/hibernate/auction/Bid.hbm.xml"/>
  20. <!-- 缓存设置 -->
  21. <class-cache class="org.hibernate.auction.Item" usage="read-write"/>
  22. <class-cache class="org.hibernate.auction.Bid" usage="read-only"/>
  23. <collection-cache collection="org.hibernate.auction.Item.bids" usage="read-write"/>
  24. </session-factory>
  25. </hibernate-configuration>

如你所见, 这个方法优势在于,在配置文件中指出了映射定义文件的名字. 一旦你需要调整Hibernate的缓存, hibernate.cfg.xml也是更方便. 注意,使用hibernate.properties还是 hibernate.cfg.xml完全是由你来决定, 除了上面提到的XML语法的优势之外, 两者是等价的.

使用XML配置,使得启动Hibernate变的异常简单, 如下所示,一行代码就可以搞定:

  1. SessionFactory sf = new Configuration().configure().buildSessionFactory();

你可以使用如下代码来添加一个不同的XML配置文件

  1. SessionFactory sf = new Configuration()
  2. .configure("catdb.cfg.xml")
  3. .buildSessionFactory();