Hibernate 是一個純 Java 的對象關系映射和持久性框架,它允許您用 XML 配置文件把普通 Java 對象映射到關系數據庫表。及ORM映射關系。
要把 Hibernate 集成到現有的 Java 項目,則需要執行以下步驟:
- 從 Hibernate 的 Web 站點下載 Hibernate 框架的最新發行版(請參閱 參考資料一節中的鏈接。)
- 把必需的 Hibernate 庫(JAR 文件)復制到應用程序的 CLASSPATH。
- 創建 XML 配置文件,用它把 Java 對象映射到數據庫表。(我們將在本文中描述這個過程。)
- 把 XML 配置文件復制到應用程序的 CLASSPATH。
您會注意到,不必修改任何 Java 對象,您就可以支持框架。例如,假設您對 Java 應用程序使用的數據庫表做了些修改 —— 例如修改了列名。在修改完表之后,您要做的只是更新對應的 XML 配置文件。 您不需要重新編譯任何 Java 代碼。
Hibernate 提供了一個查詢語言,叫作 Hibernate 查詢語言(HQL),它與 SQL 很相似。如果您喜歡用老式的 SQL 查詢,那么 Hibernate 也為您提供了使用它們的機會。但是我們使用的示例只用 HQL。
功能的核心在于 XML 配置文件。這些文件必須存在于應用程序的 CLASSPATH 中。我們把它們放在示例代碼包的 config 目錄中(您可以從 參考資料下載)。
我們要研究的第一個文件是 hibernate.cfg.xml。它包含與數據源有關的信息(數據庫 URL、模式名稱、用戶名、口令等),以及對包含映射信息的其他配置文件的引用。
其余的 XML 文件允許您把 Java 類映射到數據庫表。稍后我再深入介紹這些文件,但重要的是要清楚它們的文件名要遵守 ClassName.hbm.xml 這個模式。
配置XML:
1.hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <!--引用hibernate必須-->
<hibernate-configuration>
<session-factory name="java:/hibernate/HibernateFactory">
<property name="show_sql">true</property>
<property name="connection.driver_class">
org.gjt.mm.mysql.Driver<!-- 這里是MySQL的JDBC driver class名 -->
</property>
<property name="connection.url">
jdbc:mysql://127.0.0.1:3306/hibernate_test <!-- 這里是MySQL的hibernate_test數據庫URL -->
</property>
<property name="connection.username">
root <!--用戶名-->
</property>
<property name="connection.password">
123 <!--密碼-->
</property>
<mapping resource="Customer.hbm.xml" /> <!-- 指定Customer的映射文件 -->
<mapping resource="User.hbm.xml" /><!-- 指定User的映射文件 -->
</session-factory>
</hibernate-configuration>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="org.User" table="USER"><!--對象和表對應映射關系-->
<id name="id" column="ID"> <!--主鍵對應數據表關系-->
<generator class="increment" />
</id>
<property name="username" column="USERNAME" />
<property name="password" column="PASSWORD" />
<property name="role" column="ROLE" />
</class>
</hibernate-mapping>