一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 解析Java的Hibernate框架中的持久化類和映射文件

解析Java的Hibernate框架中的持久化類和映射文件

2020-03-10 11:52goldensun JAVA教程

這篇文章主要介紹了Java的Hibernate框架中的持久化類和映射文件,Hibernate是Java的SSH三大web開發框架之一,需要的朋友可以參考下

持久化類
Hibernate的整個概念是采取從Java類屬性的值,并將持久到數據庫表。一個映射文件Hibernate的幫助確定如何從拉動類的值,并將它們映射與表和相關的域。

其對象或實例將存儲在數據庫表中的Java類在Hibernate中稱為持久化類。 Hibernate的效果最好,如果這些類遵循一些簡單的規則,也稱為普通Java對象(POJO)編程模型。有下列持久化類的主要規則,但是,這些規則并不是必需的。

將所有的持久化Java類需要一個默認的構造函數。

所有類應該包含為了讓容易識別對象內Hibernate和數據庫的ID。此屬性映射到數據庫表的主鍵列。

所有屬性將被持久化應該聲明為private,并已在JavaBean風格的定義的getXXX和setXXX方法。

Hibernate的關鍵功能,代理,取決于持久化類或者是非final的,或者說聲明的所有公共方法的接口的實現。

所有的類不擴展或實現的EJB框架需要進行一些專門的類和接口。

POJO名稱用于強調一個給定的對象是一個普通的Java對象,而不是一個特殊的對象,好更不是Enterprise JavaBean。

一個簡單的POJO例子:
基于上面提到的一些規則,我們可以如下定義一個POJO類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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類。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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表:

?
1
2
3
4
5
6
7
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如何定義的一個或多個類映射到數據庫表下面的映射文件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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卡三卡免费网站 | 久久精品国产在热亚洲 | 男女交性特一级 | 精品区2区3区4区产品乱码9 | va在线视频 | 嘉嘉的丝袜美腿白丝 | 三上悠亚久久国产 | 日韩精品成人在线 | 日本丰满www色 | 免费看欧美一级特黄a大片一 | 亚洲人的天堂男人爽爽爽 | 欧美女人p | 明星ai智能人脸替换造梦在线播放 | 亚洲美女aⅴ久久久91 | 亚洲欧美日韩成人 | 69堂最新地域网名 | 婷婷中文 | 国产欧美一区视频在线观看 | 性奴公司 警花 | 国产精品免费久久久久影院 | 无限观看社区在线视频 | 美国美女hd18 | 亚洲午夜性春猛交xxxx | 16男男gaygays | 大学生宿舍飞机china free | www四虎 | 午夜神器18以下不能进免费 | 女人c交zzzooo在线观看 | 天天干天天色综合 | 好男人在线观看免费高清2019韩剧 | 91精品国产高清久久久久 | 欧美一区二区三区在线观看不卡 | 国产精品成人免费 | 99精品视频只99有精品 | 精品一区二区三区免费站 | 免费高清在线视频色yeye | 亚洲国产日韩欧美mv | 美女全身无遮挡 | 精品国语对白精品自拍视 | 1769亚洲欧美资源站 | 边摸边吃奶边做爽视频免费 |