Hibernate映射之实体映射<转载>

来源:互联网 发布:淘宝导航黑色的代码 编辑:程序博客网 时间:2024/05/18 00:06
实体类与数据库之间存在某种映射关系,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"<

0 0
原创粉丝点击