99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Hibernate 映射文件

2021-02-24 15:06 更新

映射文件

一個(gè)對(duì)象/關(guān)系型映射一般定義在 XML 文件中。映射文件指示 Hibernate 如何將已經(jīng)定義的類或類組與數(shù)據(jù)庫(kù)中的表對(duì)應(yīng)起來。

盡管有些 Hibernate 用戶選擇手寫 XML 文件,但是有很多工具可以用來給先進(jìn)的 Hibernate 用戶生成映射文件。這樣的工具包括 XDoclet, MiddlegenAndroMDA。

讓我們來考慮我們之前定義的 POJO 類,它的對(duì)象將延續(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;
    }
}

對(duì)于每一個(gè)你想要提供持久性的對(duì)象都需要一個(gè)表與之保持一致??紤]上述對(duì)象需要存儲(chǔ)和檢索到下列 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)
);

基于這兩個(gè)實(shí)體之上,我們可以定義下列映射文件來指示 Hibernate 如何將已定義的類或類組與數(shù)據(jù)庫(kù)表匹配。

<?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 中。讓我們來詳細(xì)地看一下在映射文件中使用的一些標(biāo)簽:

  • 映射文件是一個(gè)以 <hibernate-mapping> 為根元素的 XML 文件,里面包含所有<class>標(biāo)簽。
  • <class> 標(biāo)簽是用來定義從一個(gè) Java 類到數(shù)據(jù)庫(kù)表的特定映射。Java 的類名使用 name 屬性來表示,數(shù)據(jù)庫(kù)表明用 table 屬性來表示。
  • <meta> 標(biāo)簽是一個(gè)可選元素,可以被用來修飾類。
  • <id> 標(biāo)簽將類中獨(dú)一無(wú)二的 ID 屬性與數(shù)據(jù)庫(kù)表中的主鍵關(guān)聯(lián)起來。id 元素中的 name 屬性引用類的性質(zhì),column 屬性引用數(shù)據(jù)庫(kù)表名的列。type 屬性保存 Hibernate 映射的類型,這個(gè)類型會(huì)將從 Java 轉(zhuǎn)換成 SQL 數(shù)據(jù)類型。
  • 在 id 元素中的 <generator> 標(biāo)簽用來自動(dòng)生成主鍵值。設(shè)置 generator 標(biāo)簽中的 class 屬性可以設(shè)置 native 使 Hibernate 可以使用 identity, sequencehilo 算法根據(jù)底層數(shù)據(jù)庫(kù)的情況來創(chuàng)建主鍵。
  • <property> 標(biāo)簽用來將 Java 類的屬性與數(shù)據(jù)庫(kù)表的列匹配。標(biāo)簽中 name 屬性引用的是類的性質(zhì),column 屬性引用的是數(shù)據(jù)庫(kù)表的列。type 屬性保存 Hibernate 映射的類型,這個(gè)類型會(huì)將從 Java 轉(zhuǎn)換成 SQL 數(shù)據(jù)類型。

還有一些其它屬性和元素可用在映射文件中,我會(huì)在其它討論 Hibernate 相關(guān)的主題中盡可能得涉及更多。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)