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文件的例子如下:
<?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.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)。 |
Hibernate 配置文件详解
最新推荐文章于 2024-08-05 14:22:58 发布