JPA
JPA概述
JPA是什么
来源
JPA (Java Persistence API)Java持久化API。是一套Sun公司Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没有实现
关注点:ORM ,标准 概念 (关键字)
ORM是什么
ORM(Object Relational Mapping)对象关系映射。
问:ORM有什么用?
在操作数据库之前,先把数据表与实体类关联起来。然后通过实体类的对象操作(增删改查)数据库表,这个就是ORM的行为!
所以:ORM是一个实现使用对象操作数据库的设计思想!!!
通过这句话,我们知道JPA的作用就是通过对象操作数据库的,不用编写sql语句。
JPA的实现者
既然我们说JPA是一套标准,意味着,它只是一套实现ORM理论的接口。没有实现的代码。
那么我们必须要有具体的实现者才可以完成ORM操作功能的实现!
市场上的主流的JPA框架(实现者)有:
Hibernate (JBoos)、EclipseTop(Eclipse社区)、OpenJPA (Apache基金会)。
其中Hibernate是众多实现者之中,性能最好的。所以,我们本次教学也是选用Hibernate框架作为JPA的主讲框架。
提醒:学习一个JPA框架,其他的框架都是一样使用
JPA的作用是什么(问题)
JPA是ORM的一套标准,既然JPA为ORM而生,那么JPA的作用就是实现使用对象操作数据库,不用写SQL!!!.
问题:数据库是用sql操作的,那用对象操作,由谁来产生SQL?
答:JPA实现框架
入门示例
任何框架的学习,都建议从配置流程图开始。所以我们来一起理解JPA的配置流程图。
JPA常用 API说明
映射注解说明
注解说明
@Entity声明该实体类是一个JPA标准的实体类
@Table指定实体类关联的表,注意如果不写表名,默认使用类名对应表名。
@Column指定实体类属性对应的表字段,如果属性和字段一致,可以不写
@Id声明属性是一个OID,对应的一定是数据库的主键字段
@GenerateValue声明属性(Object ID)的主键生成策略
@SequenceGenerate使用SEQUENCE策略时,用于设置策略的参数
@TableGenerate使用TABLE主键策略时,用于设置策略的参数
@JoinTable关联查询时,表与表是多对多的关系时,指定多对多关联表中间表的参数。
@JoinColumn关联查询时,表与表是一对一、一对多、多对一以及多对多的关系时,声明表关联的外键字段作为连接表的条件。必须配合关联表的注解一起使用
@OneToMany关联表注解,表示对应的实体和本类是一对多的关系
@ManyToOne关联表注解,表示对应的实体和本类是多对一的关系
@ManyToMany关联表注解,表示对应的实体和本类是多对多的关系
@OneToOne关联表注解,表示对应的实体和本类是一对一的关系
JPA常用API说明
API说明
Persistence用于读取配置文件,获得实体管理工厂
EntityManagerFactory用于管理数据库的连接,获得操作对象实体管理类
EntityManager实体管理类,用于操作数据库表,操作对象
EntityTransaction用于管理事务。开始,提交,回滚
TypeQuery用于操作JPQL的查询的
Query用于操作JPQL的查询接口,执行没有返回数据的JPQL(增删改)
CriteriaBuilder用户使用标准查询接口 Criteria查询接口