Hibernate 注解 annotation

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;

评论列表