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