Hibernate 映射文件
hibernate 映射文件
一個對象/關系型映射一般定義在 xml 文件中。映射文件指示 hibernate 如何將已經(jīng)定義的類或類組與數(shù)據(jù)庫中的表對應起來。
盡管有些 hibernate 用戶選擇手寫 xml 文件,但是有很多工具可以用來給先進的 hibernate 用戶生成映射文件。這樣的工具包括 xdoclet
, middlegen
和 andromda
。
讓我們來考慮我們之前定義的 pojo 類,它的對象將延續(xù)到下一部分定義的表中。
public class employee { private int id; private string firstname; private string lastname; private int salary; public employee() {} public employee(string fname, string lname, int salary) { this.firstname = fname; this.lastname = lname; this.salary = salary; } public int getid() { return id; } public void setid( int id ) { this.id = id; } public string getfirstname() { return firstname; } public void setfirstname( string first_name ) { this.firstname = first_name; } public string getlastname() { return lastname; } public void setlastname( string last_name ) { this.lastname = last_name; } public int getsalary() { return salary; } public void setsalary( int salary ) { this.salary = salary; } }
對于每一個你想要提供持久性的對象都需要一個表與之保持一致??紤]上述對象需要存儲和檢索到下列 rdbms 表中:
create table employee ( id int not null auto_increment, first_name varchar(20) default null, last_name varchar(20) default null, salary int default null, primary key (id) );
基于這兩個實體之上,我們可以定義下列映射文件來指示 hibernate 如何將已定義的類或類組與數(shù)據(jù)庫表匹配。
<?xml version="1.0" encoding="utf-8"?> <!doctype hibernate-mapping public "-//hibernate/hibernate mapping dtd//en" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="employee" table="employee"> <meta attribute="class-description"> this class contains the employee detail. </meta> <id name="id" type="int" column="id"> <generator class="native"/> </id> <property name="firstname" column="first_name" type="string"/> <property name="lastname" column="last_name" type="string"/> <property name="salary" column="salary" type="int"/> </class> </hibernate-mapping>
你需要以格式 <classname>.hbm.xml
保存映射文件。我們保存映射文件在 employee.hbm.xml
中。讓我們來詳細地看一下在映射文件中使用的一些標簽:
- 映射文件是一個以
<hibernate-mapping>
為根元素的 xml 文件,里面包含所有<class>
標簽。 <class>
標簽是用來定義從一個 java 類到數(shù)據(jù)庫表的特定映射。java 的類名使用name
屬性來表示,數(shù)據(jù)庫表明用table
屬性來表示。<meta>
標簽是一個可選元素,可以被用來修飾類。<id>
標簽將類中獨一無二的id
屬性與數(shù)據(jù)庫表中的主鍵關聯(lián)起來。id
元素中的name
屬性引用類的性質(zhì),column
屬性引用數(shù)據(jù)庫表的列。type
屬性保存 hibernate 映射的類型,這個類型會將從 java 轉換成 sql 數(shù)據(jù)類型。- 在
id
元素中的<generator>
標簽用來自動生成主鍵值。設置generator
標簽中的class
屬性可以設置native
使 hibernate 可以使用identity
,sequence
或hilo
算法根據(jù)底層數(shù)據(jù)庫的情況來創(chuàng)建主鍵。 <property>
標簽用來將 java 類的屬性與數(shù)據(jù)庫表的列匹配。標簽中name
屬性引用的是類的性質(zhì),column
屬性引用的是數(shù)據(jù)庫表的列。type
屬性保存 hibernate 映射的類型,這個類型會將從 java 轉換成 sql 數(shù)據(jù)類型。
還有一些其它屬性和元素可用在映射文件中,我會在其它討論 hibernate 相關的主題中盡可能得涉及更多。
相關文章
- JDBC 教程
- JDBC 驅(qū)動類型
- JDBC 連接數(shù)據(jù)庫范例
- JDBC 連接數(shù)據(jù)庫步驟
- JDBC Statement, PreparedStatement 和 CallableStatement
- JDBC ResultSet 結果集
- JDBC Resultset 結果集范例
- JDBC 事務保存點范例
- Scala 教程
- Scala 簡介
- Scala 類和對象
- Scala 文件 I/O
- Spring 教程
- Spring 模塊
- Spring 依賴注入
- Spring 自動裝配
- Spring MVC教程
- Spring MVC表單標簽庫
- Spring security