最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析Java的Hibernate框架中的持久化類(lèi)和映射文件

 更新時(shí)間:2015年12月14日 08:48:14   投稿:goldensun  
這篇文章主要介紹了Java的Hibernate框架中的持久化類(lèi)和映射文件,Hibernate是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下

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

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

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

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

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

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

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

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

一個(gè)簡(jiǎn)單的POJO例子:
基于上面提到的一些規(guī)則,我們可以如下定義一個(gè)POJO類(lèi):

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è)類(lèi)映射到數(shù)據(jù)庫(kù)表。

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

讓我們考慮我們的對(duì)象將堅(jiān)持在下一節(jié)中定義的表前面定義的POJO類(lèi)。

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表:

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è)類(lèi)映射到數(shù)據(jù)庫(kù)表下面的映射文件。

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

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

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

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

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

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

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

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

相關(guān)文章

  • Java驗(yàn)證碼功能的實(shí)現(xiàn)方法

    Java驗(yàn)證碼功能的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Java驗(yàn)證碼功能的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Springboot消除switch-case過(guò)程解析

    Springboot消除switch-case過(guò)程解析

    這篇文章主要介紹了Springboot消除switch-case過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java Swing組件布局管理器之FlowLayout(流式布局)入門(mén)教程

    Java Swing組件布局管理器之FlowLayout(流式布局)入門(mén)教程

    這篇文章主要介紹了Java Swing組件布局管理器之FlowLayout(流式布局),結(jié)合實(shí)例形式分析了Swing組件布局管理器FlowLayout流式布局的常用方法及相關(guān)使用技巧,需要的朋友可以參考下
    2017-11-11
  • 淺談Hibernate對(duì)象狀態(tài)之間的神奇轉(zhuǎn)換

    淺談Hibernate對(duì)象狀態(tài)之間的神奇轉(zhuǎn)換

    這篇文章主要介紹了淺談Hibernate對(duì)象狀態(tài)之間的神奇轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 關(guān)于Idea清除緩存并重啟解決的問(wèn)題

    關(guān)于Idea清除緩存并重啟解決的問(wèn)題

    這篇文章主要介紹了關(guān)于Idea清除緩存并重啟解決的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • springboot+feign+Hystrix整合(親測(cè)有效)

    springboot+feign+Hystrix整合(親測(cè)有效)

    本文主要介紹了springboot+feign+Hystrix整合,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Effective Java (異常處理)

    Effective Java (異常處理)

    Effective Java (異常處理),需要的朋友可以參考一下
    2013-02-02
  • java解一個(gè)比較特殊的數(shù)組合并題

    java解一個(gè)比較特殊的數(shù)組合并題

    這篇文章主要介紹了java解一個(gè)比較特殊的數(shù)組合并題,需要的朋友可以參考下
    2014-06-06
  • SpringBoot Controller中的常用注解

    SpringBoot Controller中的常用注解

    這篇文章主要介紹了SpringBoot Controller中的常用注解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Java ServletContext對(duì)象用法解析

    Java ServletContext對(duì)象用法解析

    這篇文章主要介紹了Java ServletContext對(duì)象用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

高唐县| 锦州市| 北票市| 绵阳市| 晋江市| 化德县| 临猗县| 新乡县| 论坛| 元氏县| 阜新市| 江安县| 山西省| 冀州市| 屏东县| 沙雅县| 凯里市| 巫溪县| 恩平市| 万安县| 崇州市| 德令哈市| 濉溪县| 龙川县| 凌海市| 平原县| 驻马店市| 霍城县| 桂平市| 密云县| 屯留县| 南皮县| 湾仔区| 岱山县| 凤山县| 高唐县| 泰宁县| 西乌珠穆沁旗| 富锦市| 华容县| 华蓥市|