黄色电影一区二区,韩国少妇自慰A片免费看,精品人妻少妇一级毛片免费蜜桃AV按摩师 ,超碰 香蕉

Hibernate 映射文件

hibernate 映射文件

一個對象/關系型映射一般定義在 xml 文件中。映射文件指示 hibernate 如何將已經(jīng)定義的類或類組與數(shù)據(jù)庫中的表對應起來。

盡管有些 hibernate 用戶選擇手寫 xml 文件,但是有很多工具可以用來給先進的 hibernate 用戶生成映射文件。這樣的工具包括 xdoclet, middlegenandromda。

讓我們來考慮我們之前定義的 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, sequencehilo 算法根據(jù)底層數(shù)據(jù)庫的情況來創(chuàng)建主鍵。
  • <property> 標簽用來將 java 類的屬性與數(shù)據(jù)庫表的列匹配。標簽中 name 屬性引用的是類的性質(zhì),column 屬性引用的是數(shù)據(jù)庫表的列。type 屬性保存 hibernate 映射的類型,這個類型會將從 java 轉換成 sql 數(shù)據(jù)類型。

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

下一節(jié):hibernate 映射類型

hibernate 教程

相關文章