Hibernate - 使用注解完成映射
除了使用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 -多对多