Hibernate - 使用注解完成映射

时间:2021-06-21 13:44:59

除了使用XML配置来映射对象和数据库表,还可以使用注解来完成持久化。使用注解需要导入Hibernate Annotations扩展包

@Entity -加在类的前面,将类声明为持久化类。

-javax.Persistence.Entity :JPA的Entity,通用性好

-org.hibernate.annotations.Entity :Hibernate的Entity,有Hibernate特有的功能,如dynamicUpdate, 可以作为JPAEntity的补充

@Table -加在类的前面,为类声明关联的表名。如果表名和类名相同,可以省略。

@Table(name="t_name")

@Proxy -加在类的前面,修改类级的引索策略,默认是延迟加载 可以不写

@Proxy(lazy=false) -改为立即加载

@Column -

如果属性名和对应的列名不同, 或者get/set方法对应的属性名不是列名, 需要加在属性前面,或者加在get/set方法前面。

@ID

加在主键的属性前面,或者加在get/set方法前面,补充属性:

  @GeneratedValue -主键自增策略

@GeneratedValue(Strategy=GenerationType.Auto)

自定义SEQUENCE(ORALCE使用)

@GeneratedValue(Strategy=GenerationType.Sequence, generator="seq_name")

             @SequenceGenerator(name="seq_name", sequenceName="SEQ_ID")//可以对序列生成的值进行调整

@Transcient -加在属性前面,声明该属性不需要被持久化

@ManyToOne-多对一(外键)关联属性

@ManyToOne(targetEntity=class_name.class)

@JoinColumn(name="c_name") 多对一对应的外键列名

@OneToMany -一对多关联属性

@OneToMany(targetEntity=class_name.class,mappedBy="property_name",cascade={CascadeType.ALL})

如果Set没有加泛型,需要加targetEntity mappedBy是targetEntity中相关联的属性,并由它来维持外键关系

@ManyToMany -多对多