标签:
一:理解Hibernate注解
从JDK1.5开始,JAVA增加了Annotation支持,通过Annotation可以将一些额外的信息写在JAVA源程序中,这些信息可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation程序开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。
由于JAVA Annotation的盛行,很多原来采用XML配置文件进行管理的信息,现在都开始改为使用Annotation进行管理。其实不管是XML配置,还是Annotaion,他们的本质都是一样,只是信息的载体不同而已。
Hibernate这种ORM框架的出现启发了JavaEE规范的制定者,于是催生了JPA规范。
从另一个方面看,JPA规范的出现又为Hibernate等ORM框架制定了标准。
早期Hibernate使用XML映射文件来管理持久化类和数据表之间的映射关系,而JPA规范则推荐使用更简单,易用的Annotation来管理实体类与数据库表之间的映射关系,这样就可以避免了一个实体需要同时维护两份文件(JAVA类和XML映射文件),实体类的JAVA代码以及映射信息(写在Annotation中)都可集中在一份文件中。
二:Annotation基本配置
先写个一对一唯一主键关联
1 package com.lovo.one2one; 2 3 import javax.persistence.CascadeType; 4 import javax.persistence.Column; 5 import javax.persistence.Entity; 6 import javax.persistence.GeneratedValue; 7 import javax.persistence.Id; 8 import javax.persistence.OneToOne; 9 import javax.persistence.PrimaryKeyJoinColumn; 10 import javax.persistence.Table; 11 12 import org.hibernate.annotations.GenericGenerator; 13 /** 14 * 一对一主键关联 15 * @author 16 * 17 */ 18 @Entity //将一个JAVA类声明为一个可持久化的POJO对象 19 @Table(name="t_husband") // 该持久类所对应的表,声明在name属性中给定 20 public class HusbandBean { 21 22 @Id //指定标识属性 23 @Column(name="pk_id") //指定属性所对应的列,如果列名和属性名一致,可以不定义name属性 24 @GenericGenerator(name="hbincrement",strategy="increment") //定义主键JPA生成策略(自动增长) 25 @GeneratedValue(generator="hbincrement") 26 private Integer id; 27 28 @Column(name="f_name") 29 private String name; 30 31 @OneToOne(cascade=CascadeType.ALL) //CascadeType.ALL---增删改所有级联. 32 @PrimaryKeyJoinColumn 33 private WifeBean myWife; 34 35 public Integer getId() { 36 return id; 37 } 38 public void setId(Integer id) { 39 this.id = id; 40 } 41 public String getName() { 42 return name; 43 } 44 public void setName(String name) { 45 this.name = name; 46 } 47 public WifeBean getMyWife() { 48 return myWife; 49 } 50 public void setMyWife(WifeBean myWife) { 51 this.myWife = myWife; 52 } 53 54 }
1 package com.lovo.one2one; 2 3 import javax.persistence.CascadeType; 4 import javax.persistence.Column; 5 import javax.persistence.Entity; 6 import javax.persistence.GeneratedValue; 7 import javax.persistence.Id; 8 import javax.persistence.OneToOne; 9 import javax.persistence.PrimaryKeyJoinColumn; 10 import javax.persistence.Table; 11 12 import org.hibernate.annotations.GenericGenerator; 13 import org.hibernate.annotations.Parameter; 14 /** 15 * 一对一主键关联 16 * @author Administrator 17 * 18 */ 19 @Entity 20 @Table(name="t_wife") 21 public class WifeBean { 22 @Id 23 @Column(name="pk_id") 24 @GenericGenerator(name="hbforeign",strategy="foreign",parameters={@Parameter(name="property",value="myMan")}) 25 @GeneratedValue(generator="hbforeign") 26 private Integer id; 27 28 @Column(name="f_name") 29 private String name; 30 31 32 @OneToOne(cascade=CascadeType.ALL) 33 @PrimaryKeyJoinColumn 34 private HusbandBean myMan; 35 36 37 public Integer getId() { 38 return id; 39 } 40 41 42 public void setId(Integer id) { 43 this.id = id; 44 } 45 46 47 public String getName() { 48 return name; 49 } 50 51 52 public void setName(String name) { 53 this.name = name; 54 } 55 56 57 public HusbandBean getMyMan() { 58 return myMan; 59 } 60 61 62 public void setMyMan(HusbandBean myMan) { 63 this.myMan = myMan; 64 } 65 66 }
睡觉了!,明天起来写!
标签:
原文地址:http://www.cnblogs.com/hellokitty1/p/5065246.html