安博 · 思软
Java Persistence API
weizezhao@sram-edu.com
安博 · 思软
Hibernate 使用标注进行映射
Hibernate 使用标注 :
需要引入的 jar 包 :
•
Hibernate 本身必须 jar 包
•
Hibernate 标注包( Hibernate-annotation-3.4.0.GA )
1. Hibernate-annotations.jar
2. Hibernate-commons-annotation.jar
3. Ejb3-persistence.jar
安博 · 思软
Hibernate 使用标注进行实体映射 :
使用标注进行映射 – 具体参见帮助文档
在 hibernate.cfg.xml 中配置标注类 :
•
<mapping class=“entity.User”/>
获取 sessionFactory
•
SessionFactory sf=new
AnnotationConfiguration().configure().buildSessionFactory();
安博 · 思软
实体标注详解 ( 一 )
实体标注详解
:
@Entity(name=“Entity1”) 用于标识该类是一个实体类,如果修改了 name ,则查
询的时候要按照修改的类名去查询,比如: select o from Entity1 o
@Table 用于标识 该实体被 映射成表的一些信息
@Id 代表该属性将被映射为表中的主键
@GenerateValue(strategy=..) 主键的生成策略
@Column 用于修改默认的列的一些信息
@Temporal 用于映射 Date 类型
@Enumerated(value=EnumeratedType.STRING) 用于映射枚举类型
@Transient 用于 不将该属性映射为表中的字段
@JoinColumn 代表该表中的外键字段
@JoinTable 代表多对多关系的中间表
•
@JoinColumns 代表中间表中的外键,它引用的是 关系维护方
•
@InverseJoinColumns 代表中间表中的外键,它引用的是 非关系维护方
安博 · 思软
实体标注详解 ( 二 ):
实体标注详解
: ----
关系映射
一对一
•
主键方
:
@OneToOne(mappedBy = "person", cascade = { CascadeType.ALL })
•
外键方
:
@OneToOne(optional = false)
@JoinColumn(name = "personId")
一对多
•
一方
:
@OneToMany(mappedBy = "order", cascade = { CascadeType.ALL })
•
多方
:
@ManyToOne
@JoinColumn(name = "orderId")