激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

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

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

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

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

持久化類
Hibernate的整個(gè)概念是采取從Java類屬性的值,并將持久到數(shù)據(jù)庫表。一個(gè)映射文件Hibernate的幫助確定如何從拉動(dòng)類的值,并將它們映射與表和相關(guān)的域。

其對(duì)象或?qū)嵗龑⒋鎯?chǔ)在數(shù)據(jù)庫表中的Java類在Hibernate中稱為持久化類。 Hibernate的效果最好,如果這些類遵循一些簡(jiǎn)單的規(guī)則,也稱為普通Java對(duì)象(POJO)編程模型。有下列持久化類的主要規(guī)則,但是,這些規(guī)則并不是必需的。

將所有的持久化Java類需要一個(gè)默認(rèn)的構(gòu)造函數(shù)。

所有類應(yīng)該包含為了讓容易識(shí)別對(duì)象內(nèi)Hibernate和數(shù)據(jù)庫的ID。此屬性映射到數(shù)據(jù)庫表的主鍵列。

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

Hibernate的關(guān)鍵功能,代理,取決于持久化類或者是非final的,或者說聲明的所有公共方法的接口的實(shí)現(xiàn)。

所有的類不擴(kuò)展或?qū)崿F(xiàn)的EJB框架需要進(jìn)行一些專門的類和接口。

POJO名稱用于強(qiáng)調(diào)一個(gè)給定的對(duì)象是一個(gè)普通的Java對(duì)象,而不是一個(gè)特殊的對(duì)象,好更不是Enterprise JavaBean。

一個(gè)簡(jiǎn)單的POJO例子:
基于上面提到的一些規(guī)則,我們可以如下定義一個(gè)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;
  }
}


映射文件
對(duì)象/關(guān)系映射的XML文檔中通常被定義。這個(gè)映射文件指示Hibernate如何定義的一個(gè)或多個(gè)類映射到數(shù)據(jù)庫表。

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

讓我們考慮我們的對(duì)象將堅(jiān)持在下一節(jié)中定義的表前面定義的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;
  }
}

會(huì)有一個(gè)表對(duì)應(yīng)于每一個(gè)對(duì)象,你愿意提供持久性。考慮上述目的需要存儲(chǔ)和檢索到下面的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)
);

基于以上兩個(gè)實(shí)體,我們可以定義它指示Hibernate如何定義的一個(gè)或多個(gè)類映射到數(shù)據(jù)庫表下面的映射文件。

?
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。來看看關(guān)于在映射文件中使用的映射元素的小細(xì)節(jié):

映射文檔是具有<hibernate-mapping>為包含所有的<class>元素的根元素的XML文檔。

在<class>元素被用于定義數(shù)據(jù)庫表從一個(gè)Java類特定的映射。 Java類名指定使用class元素的name屬性和使用表屬性數(shù)據(jù)庫表名指定。

<meta>元素是可選元素,可以用來創(chuàng)建類的描述。

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

id元素內(nèi)的<generator>元素被用來自動(dòng)生成的主鍵值。將生成元素的class屬性設(shè)置為原生讓Hibernate拿起無論是identity,sequence或者h(yuǎn)ilo中的算法來創(chuàng)建主鍵根據(jù)底層數(shù)據(jù)庫的支持能力。

<property>元素用于一個(gè)Java類的屬性映射到數(shù)據(jù)庫表中的列。元素的name屬性是指屬性的類和column屬性是指在數(shù)據(jù)庫表中的列。 type屬性保存了Hibernate映射類型,這種類型的映射將會(huì)從Java轉(zhuǎn)換為SQL數(shù)據(jù)類型。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中国av免费在线观看 | 一级毛片一区 | 国产亚洲精品综合一区91555 | 亚洲网站在线观看视频 | 欧美韩国一区 | 国产婷婷一区二区三区 | 亚洲精品久久久久www | 一级黄色播放 | 蜜桃成品人免费视频 | 一本在线高清码电影 | 黄色av一区二区三区 | 成年人黄色免费网站 | 天堂热| 欧美视屏一区二区 | h视频免费看 | 鲁一鲁一鲁一鲁一曰综合网 | 午夜精品福利视频 | 久久久久久久久成人 | 久久国产精品二国产精品中国洋人 | 欧美1区2区 | 久久超| 97se亚洲综合在线韩国专区福利 | 99精品视频免费看 | 久久久久久久亚洲精品 | 他也色在线视频 | 亚洲第一页综合 | 午夜天堂在线视频 | 欧美一级黄色免费 | 极品大长腿啪啪高潮露脸 | 免费视频99 | 色玖玖综合 | 一本色道久久综合狠狠躁篇适合什么人看 | 欧美a级在线免费观看 | 欧美一级特黄aaaaaaa什 | 亚洲午夜影院在线观看 | 奶子吧naiziba.cc免费午夜片在线观看 | 精品一区二区三区网站 | 亚洲精品久久久久久下一站 | www.99热精品| 久久久久国产成人免费精品免费 | 日本精品视频一区二区三区四区 |