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

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

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

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

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

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

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

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

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

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

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

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


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

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

讓我們考慮我們的對象將堅持在下一節(jié)中定義的表前面定義的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如何定義的一個或多個類映射到數(shù)據(jù)庫表下面的映射文件。

<?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)于在映射文件中使用的映射元素的小細節(jié):

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

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

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

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

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

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

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

相關(guān)文章

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

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

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

    Springboot消除switch-case過程解析

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

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

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

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

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

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

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

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

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

    Effective Java (異常處理)

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

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

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

    SpringBoot Controller中的常用注解

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

    Java ServletContext對象用法解析

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

最新評論

连州市| 新巴尔虎右旗| 新宁县| 图片| 义马市| 于田县| 本溪| 治多县| 沙湾县| 抚顺市| 新巴尔虎左旗| 泸溪县| 昌平区| 加查县| 英山县| 襄汾县| 祁阳县| 扎赉特旗| 扎赉特旗| 舒兰市| 罗甸县| 吴忠市| 延川县| 淮北市| 亳州市| 远安县| 鹿邑县| 潞西市| 墨脱县| 中阳县| 松桃| 灯塔市| 罗甸县| 清水河县| 涞源县| 刚察县| 普格县| 加查县| 顺平县| 应城市| 崇左市|