`
农村哥们
  • 浏览: 292738 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
JPA的体系结构
JPA 体系架构

JPA 中定义一套类和接口用于实现持久化管理和对象/关系的映射,下面这张图中显示了 JPA 的主要组件以及它们之间的相互关系。
图1 JPA 主要组件和相互关系



EntityManagerFactory
EntityManagerFactory 是 EntityManager 的工厂类,负责创建 EntityManager 对象。

EntityManager
EntityManager 是 JPA 应用中使用的基本对象,通过它提供的相应方法可以管理持久化对象,也可以新建或者删除持久化对象。EntityManager 还负责创建 Query 实例。在容器外使用时,EntityManagerFactory 和 EntityManager 之间是一对一的关系。

Entity
EntityTransaction 提供 Entity 操作时需要的事务管理,和 EntityManager 是一对一的关系。在查询操作时不需要使用 EntityTransaction,而在对象持久化、状态更新、对象删除等情况下则必须使用显式的使用 EntityTransaction 的相关方法管理事务。

Query
Query 是查询实体的接口,Query 对象可以从 EntityManager 中获得。根据 EJB 3.0 规范中的描述,Query 接口需要同时支持 JPQL 和原生态 SQL 两种语法。

Persistence
Persistence 是一个工具类,负责根据配置文件提供的参数创建 EntityManagerFactory 对象。

JPA 的优势

JPA 标准制定过程中充分吸收了目前已经出现的所有持久化技术的所有优点,摒弃了它们存在的局限,使 JPA 在简单易用、查询能力等方面表现突出。

标准化

JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问 API,这保证了基于 JPA 开发的企业应用能够经过少量的修改就能够在不同的 JPA 框架下运行。

对容器级特性的支持

JPA 框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。

简单易用,集成方便

JPA 的主要目标之一就是提供更加简单的编程模型:在 JPA 框架下创建实体和创建 Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity 进行注释;JPA 的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA 基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。

可媲美 JDBC 的查询能力

JPA 定义了独特的 JPQL(Java Persistence Query Language),JPQL 是 EJB QL 的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。

支持面向对象的高级特性

JPA 中能够支持面向对象的高级特性,比如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。

下面的这个表格中列出了当前常用持久化技术的优缺点。

表 1 持久化技术的优缺点
支持内容:  序列化  JDBC  ORM  ODB  EJB 2.X  JDO  EJB 3 (JPA) 
Java 对象  Yes  No  Yes  Yes  Yes  Yes  Yes 
高级 OO 原理  Yes  No  Yes  Yes  No  Yes  Yes 
事务完整性  No  Yes  Yes  Yes  Yes  Yes  Yes 
并发  No  Yes  Yes  Yes  Yes  Yes  Yes 
大数据集  No  Yes  Yes  Yes  Yes  Yes  Yes 
现有 Schema  No  Yes  Yes  No  Yes  Yes  Yes 
关系型和非关系型数据存储  No  No  No  No  Yes  Yes  No 
查询  No  Yes  Yes  Yes  Yes  Yes  Yes 
严格的标准 / 可移植  Yes  No  No  No  Yes  Yes  Yes 
简单易用  Yes  Yes  Yes  Yes  No  Yes  Yes



OpenJPA 简介

OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。OpenJPA 可以作为独立的持久层框架发挥作用,也可以轻松的与其它 Java EE 应用框架或者符合 EJB 3.0 标准的容器集成。

除了对 JPA 标准的支持之外,OpenJPA 还提供了非常多的特性和工具支持让企业应用开发变得更加简单,减少开发者的工作量,包括允许数据远程传输/离线处理、数据库/对象视图统一工具、使用缓存(Cache)提升企业应用效率等。

数据远程传输 / 离线处理

JPA 标准规定的运行环境是 "本地" 和 "在线" 的。本地是指 JPA 应用中的 EntityManager 必须直接连接到指定的数据库,而且必须和使用它的代码在同一个 JVM 中。在线是指所有针对实体的操作必须在一个 EntityManager 范围中运行。这两个特征,加上 EntityManager 是非序列化的,无法在网络上传输,导致 JPA 应用无法适用于企业应用中的 C/S 实现模式。OpenJPA 扩展了这部分接口,支持数据的远程传输和离线处理。

数据库 / 对象视图统一工具

使用 OpenJPA 开发企业应用时,保持数据库和对象视图的一致性是非常重要的工作,OpenJPA 支持三种模式处理数据库和对象视图的一致性:正向映射(Forward Mapping)、反向映射(Reverse Mapping)、中间匹配(Meet-in-the-Middle Mapping),并且为它们提供了相应的工具支持。

正向映射 是指使用 OpenJPA 框架中提供的 org.apache.openjpa.jdbc.meta.MappingTool 工具从开发者提供的实体以及在实体中提供的对象 / 关系映射注释生成相应的数据库表。


反向映射 是指 OpenJPA 框架中提供的 org.apache.openjpa.jdbc.meta.ReverseMappingTool 工具从数据库表生成符合 JPA 标准要求的实体以及相应的对象 / 关系映射注释内容。


中间匹配 是指开发者负责创建数据库表、符合 JPA 标准的实体和相应的对象 / 关系映射注释内容,使用 OpenJPA 框架中提供的 org.apache.openjpa.jdbc.meta.MappingTool 工具校验二者的一致性。


使用缓存提升效率

性能是企业应用重点关注的内容之一,缓存是提升企业系统性能的重要手段之一。OpenJPA 针对数据持久化提供多种层次、多方面的缓存支持,包括数据、查询、汇编查询的缓存等。这些缓存的应用可以大幅度的提高企业应用的运行效率。

分享到:
评论

相关推荐

    详细介绍 jpa 开发文档

    JPA 的体系结构主要包括以下几个方面: 1. **实体 Bean**:这是 JPA 中的核心概念之一。实体 Bean 表示数据库中的表,并且通常包含数据字段和操作这些字段的方法。 - **定义属性访问**:JPA 允许开发者定义实体 ...

    全面阐释和精彩总结JPA

    JPA的技术体系主要包括三个方面: 1. **ORM映射元数据**:JPA支持XML和JDK 5.0注释两种元数据形式,用于描述对象与数据库表之间的映射关系。这种映射机制使得开发者能够以面向对象的方式处理数据库操作,而无需深入...

    JPA开发文档API

    2. **JPA体系架构** - JPA提供了一种标准的API和元数据模型,用于定义Java对象如何映射到数据库表。这包括实体类(Entity)、注解(Annotation)和持久化配置(Persistence Configuration)等元素。 3. **Entity ...

    jpa试用

    #### 一、Java持久化体系结构(JPA)概述 - **背景**:Java持久性体系结构(JPA)作为Java标准的一部分,旨在为Java应用提供一种统一的对象持久化机制。它允许开发人员将Java对象(实体)持久化到关系型数据库中,...

    jpa开发手册[文].pdf

    本文档涵盖了JPA的基础知识、JPA的体系架构、Entity Bean的定义和使用、EntityManager的配置和使用、JPA Query的使用等方面的内容。 1. 发展中的持久化技术 在Java应用程序中,持久化技术是一种非常重要的技术。 ...

    J2EE体系结构设计

    **J2EE体系结构设计**,作为一门深度探讨企业级应用开发的技术,是Java开发者必须掌握的核心知识之一。J2EE(Java 2 Platform, Enterprise Edition)为构建分布式、多层的企业级应用程序提供了全面的框架。它允许...

    EJB体系结构的改进及应用

    **EJB(Enterprise JavaBeans)体系结构的改进与应用** EJB是Java平台企业版(Java EE)中的核心组件,用于构建可扩展、安全且事务处理能力强大的分布式应用程序。这篇研究生论文深入探讨了EJB体系结构的改进及其在...

    EJB3+JBOSS5+JPA整合

    总的来说,“EJB3+JBOSS5+JPA整合”是一个集成了企业级服务、持久化管理和应用服务器的复杂体系,它为企业级Java应用提供了强大的后端支持。开发者需要深入理解EJB3的编程模型、JPA的持久化机制以及JBOSS5的配置和...

    jpa相关资料jpa相关资料

    JPA体系包括了Entity(实体)、EntityManager、EntityManagerFactory和Persistence Unit等核心概念。Entity是Java类,代表数据库中的表;EntityManager是JPA的主要工作接口,负责管理实体对象的生命周期;...

    spring3.1+hibernate4+Jpa Dao

    本文将详细解析"spring3.1+hibernate4+Jpa Dao"集成的相关知识点,帮助你理解和掌握这一体系结构。 **Spring 3.1** Spring 是一个开源的应用框架,它提供了全面的编程和配置模型,用于简化Java企业级应用的开发。...

    3 后台使用Spring框架体系结构193210111党涛1

    在"后台使用Spring框架体系结构"中,我们可以看到Spring框架的不同模块及其功能。 首先,核心容器是Spring框架的基础,包括四个模块:spring-beans、spring-core、spring-context和spring-expression。spring-core...

    JPA注解帮助文档

    JPA 通过丰富的注解体系,提供了强大的对象关系映射功能。以上介绍的各种注解涵盖了实体定义、属性映射、关系映射、继承映射等多个方面。掌握这些注解的使用方法,可以极大地提高开发效率,同时保证代码的简洁性和可...

    Apache OpenJPA User's Guide

    - **实体监听器层次结构**:解释了如何在一个继承体系中使用实体监听器。 ##### 3. 元数据 - **类元数据**: - **实体**:定义了一个持久化的Java类。 - **IdClass**:用于复合主键的情况。 - **...

    JAVA 中的Spring框架介绍包括起源、体系结构、核心部分、特点等

    ### JAVA 中的Spring框架介绍包括起源、体系结构、核心部分、特点等 #### 一、Spring框架概述 Spring是一款主流的Java EE轻量级开源框架,由“Spring之父”Rod Johnson提出并创立,旨在简化Java企业级应用的开发...

    Spring2.5.5+Struts2.0.11.2+JPA+Hibernate3.3实战

    在Java Web开发领域,Spring、Struts、Hibernate和JPA是四大核心框架,它们各自承担着不同的职责,共同构建了一个强大的企业级应用体系。本实战教程将深入探讨这些技术的集成与应用,旨在帮助开发者掌握如何高效地...

    基于CORBA和OpenJPA的分布式电力数据整合系统.pdf

    CORBA(Common Object Request Broker Architecture),即通用对象请求代理体系结构,是一种面向对象的分布式计算框架。它的核心特点是跨平台的服务互操作性,即CORBA具有平台的透明性,它允许不同的应用程序和服务...

    基于Springboot和Jpa实现的一个私有网盘.zip

    6. **数据库设计**:JPA的使用意味着需要设计合适的实体类和数据库表结构,包括用户表、文件信息表、权限表等。 7. **错误处理与日志记录**:项目应包含适当的错误处理机制和日志记录,以方便调试和监控系统的运行...

    maven3+struts2+spring3+jpa2重构itcat巴巴运动网(前32讲)

    Maven使用约定优于配置的理念,使得开发者可以快速地初始化项目结构,并通过POM(Project Object Model)文件管理项目依赖,使得版本控制和构建过程变得更加简单和标准化。 **Struts2** 是一个基于MVC(Model-View-...

    史上最全JavaEE基础体系图解(xmind).xmind

    7. **JPA(Java Persistence API)**:提供了一种规范来管理和持久化Java对象,简化了ORM(对象关系映射)的过程,与Hibernate等ORM框架紧密关联。 8. **JSF(JavaServer Faces)**:是一种用户界面组件框架,用于...

Global site tag (gtag.js) - Google Analytics