1.JPA
JPA全称: Java Persistence API
JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
JPA的出现?
JPA的出现有两个原因:
其一,简化现有Java EE和Java SE应用的对象持久化的开发工作;
其二,Sun希望整合对ORM技术,实现持久化领域的统一。
JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它不依赖于EJB 3.0,你可以在Web应用、甚至
桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,能够脱离容器独立运行,很方便开发和测试。它
的实现框架有Hibernate、TopLink,JDO等ORM框架。
1.1.JPA提供的技术
(1)ORM映射元数据
JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持
久化到数据库表中;
(2)JPA 的API
用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解
脱出来。
(3)查询语言
通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
1.2.JPA的优势
(1)标准化
JPA是JCP 组织发布的JavaEE标准之一,因此任何声称符合JPA标准的框架都遵循同样的架构,提供相同的访问
API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
(2)对容器级特性的支持
JPA框架中支持大数据集、事务、并发等容器级事务,这使得JPA超越了简单持久化框架的局限,在企业应用发挥更
大的作用。
(3)简单易用,集成方便
JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束
和限制,只需要使用 javax.persistence.Entity进行注释;JPA的框架和接口也都非常简单,没有太多特别的规则
和设计模式的要求,开发者可以很容易的 掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容
器集成。
(4)可媲美JDBC的查询能力
JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是HibernateHQL
的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJBQL的一种扩展,它是针
对实体的 一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP
BY、HAVING等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
(5)支持面向对象的高级特性
JPA中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度
的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。
2. Hibernate
JPA是需要Provider来实现其功能的,Hibernate就是JPA
Provider中很强的一个。从功能上来说,JPA现在就是
Hibernate功能的一个子集。Hibernate
从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的
JPA(Java Persistence API)
兼容认证。
例如:
(1)实体对象的状态,在Hibernate有自由、持久、游离三种,JPA里有new,managed,detached,
removed,而这些状态都是一一对应的。
(2)flush方法,都是对应的,
(3)Query query =
manager.createQuery(sql),它在Hibernate里写法上是session,而在JPA中变成了
manager
JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。那么Hibernate是如何实现与
JPA
的这种关系的呢。Hibernate主要是通过三个组件来实现的,及hibernate-annotation、hibernate-
entitymanager和hibernate-core。
(1)hibernate-annotation是Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及
Hibernate自身特殊功能的annotation。
(2)hibernate-core是Hibernate的核心实现,提供了Hibernate所有的核心功能。
(3)hibernate-entitymanager实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接
提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。
3. Hibernate-Entitymanager包的主要类及实现
(1)HibernatePersistence.java,实现了JPA的PersistenceProvider接口,提供createEntityManagerFactory
和createContainerEntityManagerFactory两个方法来创建EntityManagerFactory对象,这两个方法底层都是调
用EJB3Configuration对象的buildEntityManagerFactory方法,来解析JPA配置文件persistence.xml,,并创建
EntityManagerFactory对象。
(2)EntityManagerFactory对象的实现是EntityManagerFactoryImpl类,这个类有一个最重要的private
属性就
是Hibernate的核心对象之一SessionFactory。这个类最重要的方法是createEntityManager,来返回
EntityMnagaer对象,而sessionFactory属性也传入了该方法。
(3)EntityManager对象的实现是EntityManagerImpl类,这个类继承自AbstractEntityManagerImpl
类,在
AbstractEntityManager类中有一个抽象方法getSession来获得Hibernate的Session对象,正是在这个
Session
对象的实际支持下,EntityManagerImpl类实现了JPA的EntityManager接口的所有方法,并完成实际的ORM操
作。
(4)QueryImpl类:QueryImpl类利用EntityManagerImpl的支持实现了JPA的
Query接口;
(5)TransactionImpl利用EntityManagerImpl的支持实现了JPA的EntityTransaction接口。
分享到:
相关推荐
### JPA与Hibernate的关系 #### 一、JPA概述 **Java Persistence API (JPA)** 是一种用于管理Java应用中的关系型数据库的标准API。它的主要目的是为了提供一套统一的、可移植的对象-关系映射(ORM)解决方案。JPA...
### JPA与Hibernate的优缺点分析 #### Java Persistence API (JPA) Java Persistence API(简称JPA)是Java平台提供的一套对象关系映射(ORM)标准,它旨在为Java应用提供一种统一、灵活的数据持久化解决方案。JPA...
在Java Web开发中,Spring MVC和JPA(Java Persistence API)以及Hibernate作为ORM(对象关系映射)框架的实现,是构建高效、可维护性的应用的常见选择。本示例将探讨如何将这三个组件整合在一起,以实现一个完整的...
**JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据。它为Java开发者提供了一种对象/关系映射工具来管理Java应用中的关系数据。而**Hibernate**则是一个实现了JPA规范的开源ORM...
3. **hibernate-jpa-2.x-api**: 这个jar包包含了JPA的API定义,是与Hibernate交互时所需的依赖。 4. **hibernate-validator**: Hibernate的验证框架,符合JSR-303/349标准,用于校验实体属性。 5. **javassist**: ...
**JPA(Java Persistence API)与Hibernate:关系数据库持久化框架** JPA是Java平台上的一个标准,由JSR 317定义,用于管理Java应用程序中的对象持久性。它是Oracle公司提出的,目的是为了简化Java应用程序对关系...
**三、JPA与Hibernate的关系** JPA提供了一组规范,而Hibernate是这些规范的实现之一。使用JPA可以确保应用程序的可移植性,因为任何符合JPA规范的ORM实现(如Hibernate、EclipseLink等)都可以互换。然而,...
**JPA(Java Persistence API)与Hibernate:** JPA是Java平台上的一个标准,它定义了如何在Java应用中管理关系数据库。它提供了一种面向对象的方式来操作数据库,通过ORM(对象关系映射)技术将Java对象与数据库表...
在与JPA和Hibernate的整合中,Spring通常作为容器来管理和协调这些ORM(对象关系映射)工具。 JPA是Java EE平台的一部分,它定义了一个标准的API,允许开发者以面向对象的方式操作数据库。通过JPA,开发者可以避免...
**Hibernate**是JPA的一个实现,它是一个流行的开源对象关系映射框架。Hibernate不仅实现了JPA规范,还提供了额外的功能,如缓存机制、查询语言HQL和CGLIB动态代理等。 在使用JPA和Hibernate进行开发时,我们需要...
在Java世界中,Java Persistence API(JPA)和Hibernate是两个非常重要的持久层框架,用于管理应用程序中的对象-关系映射(ORM)。JPA是一种标准的API,而Hibernate是其最流行的实现之一。本教程将指导你如何搭建一...
整合JPA与Hibernate使得开发者可以专注于业务逻辑,而不是底层数据库操作,同时,由于Hibernate的广泛使用和社区支持,遇到问题时通常能找到丰富的解决方案。正确配置和使用这两个工具,可以大大提高Java应用的开发...
**JPA(Java Persistence API)与Hibernate** 是Java领域中的对象关系映射(ORM)框架,用于在Java应用中管理和持久化数据。JPA是Java EE的一部分,而Hibernate是其最流行的实现之一。Hibernate4提供了对JPA规范的...
在JPA_Hibernate项目中,Hibernate被用作与数据库交互的主要工具。 **jar包**(Java Archive)是Java平台特有的文件格式,用于打包和分发Java类库。在`jpa_hibernate_jar`这个压缩包中,包含的jar文件很可能是项目...
Hibernate作为JPA的实现,是一个强大的对象关系映射(ORM)框架。它将Java对象与数据库表进行映射,使得开发者可以通过操作对象来完成数据库操作。Hibernate提供了事务管理、缓存机制和一对多、多对一等复杂关系的...
JPA和Hibernate的关系可以概括为:JPA是一个抽象层次,而Hibernate是一个具体的实现。 七、建表过程 建表过程可以分为两种方式: * 先建表:根据数据库表编写配置文件的实体Bean * 先编写文件和实体Bean,然后...
【标题】"用maven构建SpringMVC+JPA+Hibernate+Hsql+jetty的web项目"涉及了多个核心的Java Web开发技术,这里我们将深入探讨这些技术以及如何将它们整合到一起。 1. Maven:Maven是Apache的一个开源项目,它是一个...
在本主题中,我们将深入探讨"JPA (Java Persistence API) 与 Hibernate"在Spring Boot框架中的应用。作为从零开始学习Spring Boot的一部分,理解如何有效地利用这些技术进行数据库操作至关重要。 首先,JPA是Java...