Hibernate 配置文件详解

Hibernate可以使用XML檔案或properties檔案來配置SessionFactory,預設的配置文件名稱為 hibernate.cfg.xml或hibernate.properties,使用下面的方式來讀入文件以配置Hibernate:
Configuration config = new Configuration().configure();

當您使用new建構Configuration物件時,會讀取Classpath路徑下的 hibernate.properties,如果您呼叫Configuration的configure()方法沒有指定路徑與檔案名稱時,則會再讀取 Classpath路徑下的hibernate.cfg.xml,如果有與hibernate.properties相同的屬性設定,則 hibernate.cfg.xml中的設定會覆蓋hibernate.properties中的設定。

前幾個主題中所示範的為使用XML文件的方式,一個XML文件的例子如下: 

  • 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> 
        <!-- 顯示實際操作資料庫時的SQL --> 
        <property name="show_sql">true</property> 
	<!-- 將顯示的SQL排版,方便觀看 -->
	<property name="format_sql">true</property>
        <!-- SQL方言,這邊設定的是MySQL --> 
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
        <!-- JDBC驅動程式 --> 
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
         <!-- JDBC URL --> 
        <property name="connection.url">jdbc:mysql://localhost/demo</property> 
        <!-- 資料庫使用者 --> 
        <property name="connection.username">caterpillar</property> 
        <!-- 資料庫密碼 --> 
        <property name="connection.password">123456</property> 

        <!-- 物件與資料庫表格映射文件 --> 
        <mapping resource="onlyfun/caterpillar/User.hbm.xml"/> 

    </session-factory> 

</hibernate-configuration>

預設的XML配置文件名稱是hibernate.cfg.xml,您也可以自行指定檔案路徑與名稱,例如:
Configuration config = new Configuration().configure("/config/db.cfg.xml");

在取得Configuration實例後,您還可以撰寫程式的方式來設定新的屬性,或甚至讀入另一個HBM設定檔案,例如:
Configuration config = new Configuration
                              .configure()
                              .setProperty(Environment.FORMAT_SQL, "true")
                              .addResource("onlyfun/caterpillar/Room.hbm.xml");

所有的屬性設定,在Hibernate中都對應於Environment類別中的一個靜態成員,例如format_sql就對 應於Enviromnent.FORMAT_SQL,connection.driver_class就對應於Environment.DRIVER。

為了配置文件時更有彈性,您可以使用系統屬性來指定,例如在hibernate.cfg.xml中撰寫:
...
    <property name="show_sql">${displaysql}</property>
    <!-- 將顯示的SQL排版,方便觀看 -->
...

如此,若在啟動Java時,加上-Ddisplaysql=true,則可觀看到產生的SQL語句。

使用屬性檔案進行配置時,檔案名稱是hibernate.properties,必須放置在Classpath之下,一個例子如下: 
  • hibernate.properties
hibernate.show_sql = true
hibernate.format_sql = true
hibernate.dialect = org.hibernate.dialect.MySQLDialect 
hibernate.connection.driver_class = com.mysql.jdbc.Driver 
hibernate.connection.url = jdbc:mysql://localhost/demo
hibernate.connection.username = caterpillar 
hibernate.connection.password = 123456

由於properties檔案中不包括映射文件的名稱,為了要取得物件至資 料庫表格的映射文件,您必須在程式中如下載入: 
Configuration cfg = new Configuration() 
    .addClass(onlyfun.caterpillar.User.class) 
    .addClass(onlyfun.caterpillar.Room.class);

第一個addClass()加入位於Classpath根目錄下的User.hbm.xml,第二個addClass()加入Room類別的映射文件,該 文件必須位於與User類別同一個目錄,也就是onlyfun/caterpillar/Room.hbm.xml。

在Hibernate下載檔案中的etc目錄下,有hibernate.cfg.xml與hibernate.properties可供設定參考。
 

Configuration的實例管理Hibernate的配置訊息,通常用於建立SessionFactory,例如:
SessionFactory sessionFactory = config.buildSessionFactory();

SessionFactory一旦建立,就被賦予當時Configuration的配置訊息,之後您改變Configuration並不會影響已建立的 SessionFactory實例,如果對Configuration改動後,則要建立一個新的SessionFactory實例,新的實例中會包括新的 配置訊息, SessionFactory是被設計為「執行緒安全的」(Thread-safe)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值