一.什么是JPA
JPA(Java Persistence API,Java持久化API),定义了对象-关系映射(ORM)以及实体对象持久化的标准接口.JPA是EJB3.0规范的一部分,JPA不局限于EJB3.0,而是作为POJO持久化的标准规范,可以脱离容器独立的运行,开发和测试变得更加方便.
JPA提供了以POJO编程模型为持久化对象的机制;通过JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.JPA的结构如下所示:
二.JPA的产生
JPA是SUN引入的.那么SUN为什么要引入新的JPA ORM规范呢.主要是处于两个原因:
其一:简化现有Java EE和Java SE应用的对象持久化的开发工作:
*和实体Bean相比,需要配置文件,提供了更好的开发体验
*不用于EJB3.0,JPA不依赖J2EE容器,是java中的通用API.
其二.Sun希望整合ORM技术,统一各种ORM框架的规范,实现天下统一.目前Hibenate3.2已经提供了JPA的实现.
三.为什么要使用JPA
咱们都知道持久化的作用是处理复杂的业务逻辑,减少重复代码.如果你写过复杂的应用,就会发现用JDBC要处理大量地处理字符串,而且直接使用JDBC字符串处理特别容易导致SQL注入漏洞,如果直接使用框架就可以省去这些麻烦.更加专注于业务逻辑.JPA的出现就是为了制定一个持久化的标准.
四.JAP与hibernate存在什么关系
JPA是hibernate的一个抽象或者接口,JPA与hibernate的关系就犹如JDBC和JDBC驱动的关系.
JPA是一种规范:JPA本质上就是一种ORM规范,不要误以为是ORM框架.因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口但具体实现则由用服务器厂商提供.
hibernate是具体实现,hibernate除了作为ORM框架之外,它也是一种JPA实现.
从功能上来说,我更加愿意理解JPA是hibernate功能的一个子集.
五.JPA的优缺点
优点:
(1)标准化
(2)对容器级特性的支持:JPA框架中支持大数据集,事务,并发等容器级事务.
(3)简单易用,集成方便:JPA的主要目标之一就是提供更加简单的编程模型.
(4)与JDBC的查询能力不分上下:JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改.
(5)支持面向对象的高级特性:JPA中能够支持面向对象的高级特性.
缺点:
(1)由于出来的时间不是特别长,在技术上还不是特别的稳定.
(2)JPA是一种规范不是一种产品,需要提供商提供一个实施,才能获得这些基于标准的API优势.
(3)JPA是hibernate等ORM框架爱真子集,只提供其中最好的功能,如果应用程序中需要的功能,但是规范中没有提供的功能,则使用供应商特有的API,导致移植性减弱.
六.主要技术
(1)ORM映射元数据
JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架将实体对象持久化到数据库表中.
(2)JPA的API
API在哪里都是常用常见的.在最初学习的VB中都有API的存在.在JPA中再次见到API,从而可见API的强大.此处的API用来操作实体对象,执行CRUD操作,框架在后台代替我们完成所有的事情,把开发者从繁琐的JDBC和SQL代码中解脱出来.
(3)查询语言
这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合.
学习还得从宏观下手,大概了解这个内容的来龙去脉和精髓,在深入学习内涵.就如要了解JPA这东西,就需要和以前学习过的hibernate和SQL ,API联系起来,那么就会变得简单了,理解起来就快了.学习要从宏观出发,在去寻找能产生共鸣的某个知识点.往下还会继续给大家介绍关于JPA的内容