程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 解析Java的Hibernate框架中的耐久化類和映照文件

解析Java的Hibernate框架中的耐久化類和映照文件

編輯:關於JAVA

解析Java的Hibernate框架中的耐久化類和映照文件。本站提示廣大學習愛好者:(解析Java的Hibernate框架中的耐久化類和映照文件)文章只能為提供參考,不一定能成為您想要的結果。以下是解析Java的Hibernate框架中的耐久化類和映照文件正文


耐久化類
Hibernate的全部概念是采用從Java類屬性的值,並將耐久到數據庫表。一個映照文件Hibernate的贊助肯定若何從拉動類的值,並將它們映照與表和相干的域。

其對象或實例將存儲在數據庫表中的Java類在Hibernate中稱為耐久化類。 Hibernate的後果最好,假如這些類遵守一些簡略的規矩,也稱為通俗Java對象(POJO)編程模子。有以下耐久化類的重要規矩,然則,這些規矩其實不是必須的。

將一切的耐久化Java類須要一個默許的結構函數。

一切類應當包括為了讓輕易辨認對象內Hibernate和數據庫的ID。此屬性映照到數據庫表的主鍵列。

一切屬性將被耐久化應當聲明為private,並已在JavaBean作風的界說的getXXX和setXXX辦法。

Hibernate的症結功效,署理,取決於耐久化類或許長短final的,或許說聲明的一切公共辦法的接口的完成。

一切的類不擴大或完成的EJB框架須要停止一些專門的類和接口。

POJO稱號用於強調一個給定的對象是一個通俗的Java對象,而不是一個特別的對象,好更不是Enterprise JavaBean。

一個簡略的POJO例子:
基於下面提到的一些規矩,我們可以以下界說一個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;
  }
}


映照文件
對象/關系映照的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相干主題的其他屬性和可用的元素。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved