jpa(Java Persistence API)

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。

起源

JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它又不限于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。Hibernate3.2+、TopLink 10.1.3以及OpenJPA都提供了JPA的实现。

JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:

ORM映射元数据

JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;

API

用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。

查询语言

这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

(此部分摘录于360百科)

=======================================================================================================================

1.1 JPA是什么

JPA (Java Persistence API) Java持久化API。是一套Sun公司 Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没有实现

 

关注点: ORM  ,标准 概念 (关键字)

1.1.1 ORM是什么

 

ORM(Object Relational Mapping) 对象关系映射。

问:ORM有什么用?

在操作数据库之前,先把数据表与实体类关联起来。 然后通过实体类的对象操作(增删改查)数据库表,这个就是ORM的行为! 

所以:ORM是一个实现使用对象操作数据库的设计思想!!! 

通过这句话,我们知道JPA的作用就是通过对象操作数据库的,不用编写sql语句。

1.2 JPA的实现者

既然我们说JPA是一套标准,意味着,它只是一套实现ORM理论的接口。没有实现的代码。 

那么我们必须要有具体的实现者才可以完成ORM操作功能的实现! 

  

市场上的主流的JPA框架 (实现者)有: 

Hibernate (JBoos)、EclipseTop(Eclipse社区)、OpenJPA (Apache基金会)。 

  

其中Hibernate是众多实现者之中,性能最好的。所以,我们本次教学也是选用Hibernate框架作为JPA的主讲框架。 

提醒: 学习一个JPA框架,其他的框架都是一样使用

1.3JPA的作用是什么(问题)

JPA是ORM的一套标准,既然JPA为ORM而生,那么JPA的作用就是实现使用对象操作数据库,不用写SQL!!!. 

 

问题:数据库是用sql操作的,那用对象操作,由谁来产生SQL? 

答:JPA实现框架 

1.4 使用JPA的好处

使用JPA,可以直接使用对象操作数据库,由框架根据映射的关系生成SQL。不用开发人员编写。这样做,开发人员就不用编写SQL语句了。

  

问题:这样有什么好处呢? 

 

答:不同的数据库的SQL语法是有差异,如果不需要编写SQL语句。就屏蔽各种数据库SQL的差异。那么,编写的代码就可以一套代码兼容多种数据库!!!!

1.5 映射注解说明

注解

说明

@Entity

声明该实体类是一个JPA标准的实体类

@Table

指定实体类关联的表,注意如果不写表名,默认使用类名对应表名。

@Column

指定实体类属性对应的表字段,如果属性和字段一致,可以不写

@Id

声明属性是一个OID,对应的一定是数据库的主键字段

@GenerateValue

声明属性(Object ID)的主键生成策略

@SequenceGenerate

使用SEQUENCE策略时,用于设置策略的参数

@TableGenerate

使用TABLE主键策略时,用于设置策略的参数

@JoinTable

关联查询时,表与表是多对多的关系时,指定多对多关联表中间表的参数。

@JoinColumn

关联查询时,表与表是一对一、一对多、多对一以及多对多的关系时,声明表关联的外键字段作为连接表的条件。必须配合关联表的注解一起使用 <key>

@OneToMany

关联表注解,表示对应的实体和本类是一对多的关系

@ManyToOne

关联表注解,表示对应的实体和本类是多对一的关系

@ManyToMany

关联表注解,表示对应的实体和本类是多对多的关系

@OneToOne

关联表注解,表示对应的实体和本类是一对一的关系

1.6 JPA常用API说明

API

说明

Persistence

用于读取配置文件,获得实体管理工厂

EntityManagerFactory

用于管理数据库的连接,获得操作对象实体管理类

EntityManager

实体管理类,用于操作数据库表,操作对象

EntityTransaction

用于管理事务。开始,提交,回滚

TypeQuery

用于操作JPQL的查询的

Query

用于操作JPQL的查询接口,执行没有返回数据的JPQL(增删改)

CriteriaBuilder

用户使用标准查询接口 Criteria查询接口

猜你喜欢

转载自www.cnblogs.com/weishenme/p/11305380.html
今日推荐