一、JPA注解的介绍
Hibernate Annotation :是使用注解代替XML映射对象关系的新方式
JPA: Java Persistence API 是EJB3.0规范中的一部分,专门描述如何处理持久化的规范
常用方式:
? 使用JPA的标准注解来做对象关系映射
? 使用Hibernate来完成持久化操作。
JPA的注解定义放置在javax.persistence包中
常用的注解有:
? @Entity
? @Table
? @Id
? @Temporal
? @Basic
? Column
? JPA注解中乐观锁@Version
a
编写实体测试类:
二、基于JPA注解的对象关系映射
JPA注解中关联映射的应用:
1、一对多(@OneToMany)
2、一对一(@OneToOne)
3、多对多(@ManyToMany)
一对多:
类别Category和产品Product是一对多的关系。产品和类别则是多对一的关系。
先在一端既Category类下配置 一对多的注解,
mappedBy表示维护关系的反转,相当于property_ref,维护关系的反转,交给另一端来维护关系。
再来看一下多端:
//这里配置关系,并且确定关系维护端和被维护端。mappBy表示关系被维护端,只有关系端有权去更新外键。这里还有注意OneToMany默认的加载方式是赖加载。当看到设置关系中最后一个单词是Many,那么该加载默认为懒加载
这里设置JoinColum设置了外键的名字,在这里,Product表示是关系 维护端,Category表示关系被维护端。
一对一:
2、基于主键的一对一映射:
不会经常用,这个意思是说,两个表中使用相同的主键,使用Hibernate自定义主键生成策略,由@GenericGenerator实现。引用myfor.
基于外键的一对一则相对容易些
DBA.png" alt="">
3、多对多:
我们以Student和Course类为例,学生和课程是多对多的关系
JoinTable,我们创建了一个中间表,作为两个表之间的关联。配置好Student端后,Course端配置 就很简单了,直接使用@ManyToMany就可以了。
映射命名查询
? NameQueries
? NameQuery