Hibernate映射之實體映射

實體類與數據庫之間存在某種映射關係,Hibernate依據這種映射關係完成數據的存取,因此映射關係的配置在Hibernate中是最關鍵的。Hibernate支持xml配置文件與@註解配置兩種方式。xml配置文件是最基礎的配置@註解是Java的官方JPA(Java Persistence API提供的。本章分別使用@註解與xml講解Hibernate的映射配置。

10.1 實體類的映射

Java的角度講,實體類就是普通的Java封裝類(有人稱爲POJO有人稱爲VO)。僅從實體類中的代碼信息,Hibernate並不能得知該實體類對應哪個數據表,因此還需要以某種方式配置一下。常用的方式有*.hbm.xml文件配置與@註解配置兩種。

hbm.xml文件就是普通的xml文件,hbmHibernate Mapping的縮寫,這樣從文件名上就能判斷該文件爲Hibernate實體類配置文件。在JPA出現之前,Hibernate都使用hbm.xml文件配置。JPA出現後,推薦使用JPA@註解配置,因爲對於所有的ORM框架,@註解都是通用的。

10.1.1 使用@註解配置實體類

實體類一般有ID、普通屬性、集合屬性等,分別對應數據庫的主鍵、普通列、外鍵。@註解配置中,實體類用@Entity註解,用@Table指定對應的數據表,用@Id配置主鍵,用@Column配置普通屬性,用@OneToMany@ManyToOne@OneToOne@ManyToMany配置實體間關係等。實體類之間的關於在後面的章節中會做詳細介紹。下面編寫一個UsersVo類,在該類中使用@註解配置實體類的映射,UsersVo類的代碼如下:

package com.cn.vo;

import javax.persistence.*;

@Entity// 註解Entity表示該類納入Hibernate管理,能夠被持久化

@Table(name = "users")// 指定該實體類對應的數據庫表名

public class UsersVo {

//Fields

@Id// 指定該列爲主鍵。

// 這個註解用來表示主鍵類型, auto爲數據庫自增長類型

@GeneratedValue(strategy = GenerationType.AUTO)

private int id;


@Column(name = "name")//指定變量對應的數據庫表的列爲"name"

private String name;


@Column(name = "age")//指定變量對應的數據庫表的列爲"age"

private int age;


@Column(name = "tel")//指定變量對應的數據庫表的列爲"tel"

private String tel;


@Column(name = "address")//指定變量對應的數據庫表的列爲"address"

private String address;


// Constructors


public UsersVo() {

}


public UsersVo(int id) {

this.id = id;

}


public UsersVo(int id, String name, int age, String tel,

String address) {

this.id = id;

this.name = name;

this.age = age;

this.tel = tel;

this.address = address;

}


public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getTel() {

return tel;

}

public void setTel(String tel) {

this.tel = tel;

}

}

上述代碼中,所有的@註解都是javax.persistence.*下的,而不是org.hibernate.*下的。javax.persistence.*下的註解爲JPA規範規定的註解,用於標註實體類與數據庫的映射關係,而org.hibernate.*下的註解僅用於補充,當某個功能JPA暫時不支持而Hibernate支持時使用。

10.1.2 使用XML文件配置實體類映射

多個實體類可以配置在一個XML文件中。Hibernate推薦XML映射文件和實體類同名,便於閱讀和維護,比如UsersVo.java文件對應UsersVo. hbm.xml文件。XML文件一般以“.hbm.xml”結尾,便於辨認,也可以直接用“.xml”結尾。例如UsersVo類的映射文件可取名爲“UsersVo.hbm.xml”或者“UsersVo.xml”。使用XML文件配置實體類映射的時候,實體類和普通的實體類一樣,和數據庫的映射關係放在XML文件中,UsersVo. hbm.xml文件代碼如下:

< xmlversion encoding="utf-8" >

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"<

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章