OpenJPA

JPA规范实现
授权协议 Apache
开发语言 Java
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 不详
投 递 者 程俊健
操作系统 跨平台
开源组织 Apache
适用人群 未知
 软件概览

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 针对数据持久化提供多种层次、多方面的缓存支持,包括数据、查询、汇编查询的缓存等。这些缓存的应用可以大幅度的提高企业应用的运行效率。

OpenJPA Javadoc:http://www.ostools.net/apidocs/apidoc?api=openjpa

  • OpenJPA 教程 JPA 简介 OpenJPA 简介 OpenJPA 环境准备 OpenJPA 入门实例 JPA 常用API介绍 OpenJPA 常用注解 @Entity 注解 @Table 注解 @Id 注解 @IdClass 注解 @GeneratedValue 注解 @TableGenerator 注解 @Column 注解 @SecondaryTable 注解 @Transient 注

  • 环境准备 OpenJPA下载:http://openjpa.apache.org/ Derby下载:http://db.apache.org/derby/ 案例源码下载:http://rcom10002.download.csdn.net/user/rcom10002/Java 在学习案例一和二之前,先准备好实验环境,首先准备数据表: CREATE TABLE AIRLINES (

  • 关于这个问题肯定有很多问题,我已经读了一些,但答案仍然没有找到答案.我是JPA的新手,我只是想测试一个简单的应用程序,看看我是否可以正确配置它.它是一个独立的应用程序,意味着它不会与Web服务器或任何东西一起运行.实体类看起来像: @Entity public class Person{ @Id private String userID = null; @Transient private Us

  • 使用spring-data-jpa+hibernate进行持久化,接口出现如下异常 org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.Transact

  • activiti 在创建流程时出现异常 ,提示如下: Tue Oct 13 17:00:02 CST 2020 There was an unexpected error (type=Internal Server Error, status=500). Could not open JPA EntityManager for transaction; nested exception is or

  • 异常记录 异常说明: spring boot 链接 sql server 报错 Could not open JPA EntityManager for transaction; 带有空指针异常 以及Activiti 异常 错误分析 : 这个错误的产生极大可能是软件版本差异导致错误 环境说明:SQLServer 2008 R2 版本 spring boot 2.3.5 配置文件无误 spring.

  • 从git服务器拉下的项目,第一次运行,报此错 org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionExc

 相关资料
  • 我了解批次归一化有助于更快的训练,将激活转向单位高斯分布,从而解决梯度消失问题。批次规范行为在训练(使用每个批次的平均值/var)和测试时间(使用训练阶段的最终运行平均值/var)中的应用不同。 另一方面,实例归一化作为对比度归一化,如本文所述https://arxiv.org/abs/1607.08022。作者提到,输出样式化的图像不应依赖于输入内容图像的对比度,因此实例规范化有助于实现。 但是

  • Number,String,Boolean和Object 不要使用如下类型Number,String,Boolean或Object。 这些类型指的是非原始的装盒对象,它们几乎没在JavaScript代码里正确地使用过。 /* 错误 */ function reverse(s: String): String; 应该使用类型number,string,and boolean。 /* OK */ fu

  • 参数规范 参数前带* 表示必填 参数命名采用小写加下划线形式 请求每个接口时,在 header里带上 XX-Token(用户 token),XX-Device-Type(类型:mobile,android,iphone,ipad,web,pc,mac,wxapp),XX-Api-Version(比如1.0.0),XX-Wxapp-AppId(小程序 AppId) 返回结果 参数命名采用小写加下划线

  • 公司及产品名称 我们的公司及产品名称是「DaoCloud」。注意这是两个单词的合成词,所以中间沒有空格(参考:GitHub)。如作为 URL 的一部分,应该使用全小写的「daocloud」。 文案风格 一定多检查,确保没有错别字。 即使是流行语中的谐音错别字也不要使用,比如「墙裂」、「童鞋」等。 我们崇尚精练的文风。请在检查中把对表达意思没有明显作用的字、词、句删除,在不影响表达效果的前提下把文案

  • AMD(异步模块定义)是为浏览器环境设计的,因为 CommonJS 模块系统是同步加载的,当前浏览器环境还没有准备好同步加载模块的条件。 AMD 定义了一套 JavaScript 模块依赖异步加载标准,来解决同步加载的问题。 模块通过 define 函数定义在闭包中,格式如下: define(id?: String, dependencies?: String[], factory: Functi

  • CommonJS 是以在浏览器环境之外构建 JavaScript 生态系统为目标而产生的项目,比如在服务器和桌面环境中。 这个项目最开始是由 Mozilla 的工程师 Kevin Dangoor 在2009年1月创建的,当时的名字是 ServerJS。 我在这里描述的并不是一个技术问题,而是一件重大的事情,让大家走到一起来做决定,迈出第一步,来建立一个更大更酷的东西。 —— Kevin Dango

  • 本文向大家介绍PE8规范相关面试题,主要包含被问及PE8规范时的应答技巧和注意事项,需要的朋友参考一下     各种右括号前不要加空格。 逗号、冒号、分号前不要加空格。 函数的左括号前不要加空格。如Func(1) 序列的左括号前不要加空格。如list[2] 操作符左右各加一个空格,不要为了对齐增加空格 函数默认参数使用的赋值符左右省略空格 不要将多句语句写在同一行,尽管使用‘;’允许 if/for

  • XXX 已弃用: 移动到这里 消息类型 ABCI 请求/响应在这个模式文件中定义为简单的 Protobuf 消息。 TendermintCore 发送请求,ABCI 应用程序发送响应。在这里,我们提供了一个概述的消息类型和他们是如何使用的 Tendermint。然后我们将每个请求-响应对描述为一个带有参数和返回值的函数,并添加一些用法说明。 有些消息(Echo, Info, InitChain,