在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包。
配置持久化类常用的注解:
注:GeneratedValue指定了标识符的生成策略。jpa提供了4种标准用法。
01.AUTO:根据不同的数据库选择不同的策略
02.TABLE:使用表保存id值
03.INDENITY:使用数据库自动生成主键
04.SEQUENCE:使用序列创建主键(如Oracle)
配置关联关系常用的注解:
话不多说了,待大家来看看到底怎么用的才最重要
1.注解配置对象关联关系之 一对一(学生对学生证)
Student.java
package cn.zhang.entity; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToOne; import javax.persistence.Table; //学生实体类 @Entity @Table(name="Student2161") public class Student { @Id //主键 @GeneratedValue //主键生成策略 private Integer sid; private String name; //配置之间的一对一的关系 //cascade={CascadeType.ALL}设置了级联 //mappedBy="stu"设置维护关系的控制权交给StuCard类这一方,相当于Student.hbm.xml中配置的inverse="true" @OneToOne(mappedBy="stu",cascade={CascadeType.ALL}) private StuCard sCard; public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public StuCard getsCard() { return sCard; } public void setsCard(StuCard sCard) { this.sCard = sCard; } }