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;