ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 3.7\. XML配置文件 另一个配置方法是在`hibernate.cfg.xml`文件中指定一套完整的配置. 这个文件可以当成`hibernate.properties`的替代。 若两个文件同时存在,它将覆盖前者的属性. XML配置文件被默认是放在`CLASSPATH`的根目录下. 这是一个例子: ``` <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- 以/jndi/name绑定到JNDI的SessionFactory实例 --> <session-factory name="java:hibernate/SessionFactory"> <!-- 属性 --> <property name="connection.datasource">java:/comp/env/jdbc/MyDB</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">false</property> <property name="transaction.factory_class"> org.hibernate.transaction.JTATransactionFactory </property> <property name="jta.UserTransaction">java:comp/UserTransaction</property> <!-- 映射定义文件 --> <mapping resource="org/hibernate/auction/Item.hbm.xml"/> <mapping resource="org/hibernate/auction/Bid.hbm.xml"/> <!-- 缓存设置 --> <class-cache class="org.hibernate.auction.Item" usage="read-write"/> <class-cache class="org.hibernate.auction.Bid" usage="read-only"/> <collection-cache collection="org.hibernate.auction.Item.bids" usage="read-write"/> </session-factory> </hibernate-configuration> ``` 如你所见, 这个方法优势在于,在配置文件中指出了映射定义文件的名字. 一旦你需要调整Hibernate的缓存, `hibernate.cfg.xml`也是更方便. 注意,使用`hibernate.properties`还是 `hibernate.cfg.xml`完全是由你来决定, 除了上面提到的XML语法的优势之外, 两者是等价的. 使用XML配置,使得启动Hibernate变的异常简单, 如下所示,一行代码就可以搞定: ``` SessionFactory sf = new Configuration().configure().buildSessionFactory(); ``` 你可以使用如下代码来添加一个不同的XML配置文件 ``` SessionFactory sf = new Configuration() .configure("catdb.cfg.xml") .buildSessionFactory(); ```