hibernate注解需要导入以下jar包:
- hibernate-commons-annotations.jar
- hibernate-annotations.jar
- ejb3-persistence.jar
Hibernate注解配置
//定义实体类: @Entity //@Entity定义实体类,表示该类可以通过注解进行操作。 @Table(name="t_product") //@Table(name="t_product")定义该类对应的数据库表名 public class ProductBean { }
//定义ORM映射属性 public class ProductBean { @Id //@Id 表示定义主键, @GeneratedValue(strategy=GenerationType.AUTO) //@GeneratedValue(strategy=GenerationType.AUTO)定义主键生成策略,为数据库自动增长 private int id; @Column(name="productName") //@Column(name="productName")定义该属性对应的列名,如果属性名和列名一致可以不用写。 private String name; private int price;
一对多
一方配置:
@OneToMany( mappedBy="person", //为多方的属性名 fetch=FetchType.EAGER, //指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EAGER表示立即加载 targetEntity=HouseBean.class, //集合中存放元素类型 cascade=CascadeType.ALL) //级联操作 private Set houses = new HashSet();
多方配置:
@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="personId") //@JoinColumn(name="personId")指明从表中的外键列名 private Person person; /* Hibernate注解一对多。默认采用多方维护外键方式。相当于在一方set标签加入了 inverse="true"。 */
多对多
//多方配置: @ManyToMany(fetch=FetchType.LAZY, targetEntity=TeacherBean.class) @JoinTable(name="t_stu_tea",//指明中间表名 joinColumns={@JoinColumn(name="studentId")},//当前对象对应中间表的外键列名 inverseJoinColumns={ @JoinColumn(name="teacherId")}) //指明多对多中另一个表的外键列名。 private Set teacherSet;