位置:首頁 > Java技術 > hibernate > Hibernate映射文件

Hibernate映射文件

對象/關係映射的XML文檔中通常被定義。這個映射文件指示Hibernate如何定義的一個或多個類映射到數據庫表。

雖然很多Hibernate用戶選擇手工編寫XML中,有一些工具可以用來生成映射文檔。包括XDoclet,Middlegen和AndroMDA等用於高級Hibernate的用戶。

讓我們考慮我們的對象將堅持在下一節中定義的表前麵定義的POJO類。

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如何定義的一個或多個類映射到數據庫表下麵的映射文件。

<?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>為包含所有的<class>元素的根元素的XML文檔。

  • 在<class>元素被用於定義數據庫表從一個Java類特定的映射。 Java類名指定使用class元素的name屬性和使用表屬性數據庫表名指定。

  • <meta>元素是可選元素,可以用來創建類的描述。

  • <id>元素映射在類中的唯一ID屬性到數據庫表的主鍵。 id元素的name屬性是指屬性的類和column屬性是指在數據庫表中的列。 type屬性保存了Hibernate映射類型,這種類型的映射將會從Java轉換為SQL數據類型。

  • id元素內的<generator>元素被用來自動生成的主鍵值。將生成元素的class屬性設置為原生讓Hibernate拿起無論是identity,sequence或者hilo中的算法來創建主鍵根據底層數據庫的支持能力。

  • <property>元素用於一個Java類的屬性映射到數據庫表中的列。元素的name屬性是指屬性的類和column屬性是指在數據庫表中的列。 type屬性保存了Hibernate映射類型,這種類型的映射將會從Java轉換為SQL數據類型。

還有這將在映射文件中使用,接下來儘量覆蓋儘可能多其他的Hibernate相關主題的其他屬性和可用的元素。