更新時間:2022-02-11 11:25:34 來源:動力節(jié)點(diǎn) 瀏覽1034次
對象/關(guān)系映射通常在 XML 文檔中定義。這個映射文件指示 Hibernate——如何將定義的一個或多個類映射到數(shù)據(jù)庫表?
盡管許多 Hibernate 用戶選擇手動編寫 XML,但存在許多工具來生成映射文檔。其中包括適用于高級 Hibernate 用戶的XDoclet、Middlegen和AndroMDA。
讓我們考慮我們之前定義的 POJO 類,其對象將持久保存在下一節(jié)定義的表中。
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;
}
}
您愿意提供持久性的每個對象都會對應(yīng)一個表。考慮上述對象需要存儲和檢索到以下 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)
);
基于以上兩個實(shí)體,我們可以定義如下映射文件,它指示 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>
您應(yīng)該將映射文檔保存在格式為 .hbm.xml 的文件中。我們將映射文檔保存在文件 Employee.hbm.xml 中。
讓我們了解一下有關(guān)映射文件中使用的映射元素的一些細(xì)節(jié) -
映射文檔是以<hibernate-mapping>作為根元素的 XML 文檔,它包含所有<class>元素。
元素用于定義從 Java 類到數(shù)據(jù)庫表的特定映射。Java 類名使用class 元素的name屬性指定,數(shù)據(jù)庫表名使用 table 屬性指定。
< meta>元素是可選元素,可用于創(chuàng)建類描述。
<class>元素將類中的唯一 ID 屬性映射到數(shù)據(jù)庫表的主鍵。id 元素的name屬性指的是類中的屬性,column屬性指的是數(shù)據(jù)庫表中的列。type屬性保存hibernate 映射類型,這種映射類型將從Java 轉(zhuǎn)換為SQL 數(shù)據(jù)類型。
id元素中的<generator>元素用于自動生成主鍵值。生成器元素的class屬性設(shè)置為native以讓 hibernate 選擇identity、sequence或hilo算法來根據(jù)底層數(shù)據(jù)庫的功能創(chuàng)建主鍵。
<property>元素用于將 Java 類屬性映射到數(shù)據(jù)庫表中的列。元素的名稱屬性是指類中的屬性,列屬性是指數(shù)據(jù)庫表中的列。type屬性保存hibernate 映射類型,這種映射類型將從Java 轉(zhuǎn)換為SQL 數(shù)據(jù)類型。
還有其他可用的屬性和元素,它們將在映射文檔中使用,在討論其他 Hibernate 相關(guān)主題時,將嘗試涵蓋盡可能多的內(nèi)容。如果您想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點(diǎn)的Java視頻,里面的課程內(nèi)容細(xì)致全面,通俗易懂,適合小白學(xué)習(xí),希望對大家能夠有所幫助。
初級 202925
初級 203221
初級 202629
初級 203743