OpenJPA的增强器(Enhancer)能够在运行时对系统性能进行优化,并且提高惰性加载的灵活性,是OpenJPA与Hibernate最大不同之处。增强器能够自动为持久化的类添加一些代码,这些代码能够帮助二进制的类实现持久化类所必需的一些特性。可以用一个图表示增强器的作用,如图14-5 所示。
OpenJPA的增强器可以通过两种方式对持久化类进行优化,一是编译时强化;二是使用Java 5 提供的新特性Instrumentation,在运行时创建代理来强化。
— 编译时增强
在编译类时,使用 org.apache.openjpa.enhance.PCEnhancer类来编译,例如下面代码所示。
java org.apache.openjpa.enhance.PCEnhancer Magazine.java
这种方式适用于运行在 Java 5版本以下的环境中。其中编译时也可以指定一些参数,请读者参阅相关的文档,这里不做详细介绍。
— 运行时增强
Java 5 提供的新特性Instrumentation提供Java代理(Java Agent)在运行时对类文件进行修改,以达到增强的目的。例如下面代码所示。
java -javaagent:/home/dev/openjpa/lib/openjpa.jar com.xyz.Main
Java EE 5规范明确规定了,当部署时,持久化的类将会自动增强。如果运行在Java EE 5的应用服务器中,OpenJPA将自动增强。但要注意,如果编译后的类已经增强过,OpenJPA将不再增加此持久化类。
— 不使用增强器
虽然增强器能够提高持久化类的性能,但 OpenJPA中增强器是可选的,并不是必需的。在不同的运行环境中,增强器的处理也是不同的。
— 部署时增强
如果运行在Java EE 5容器中,或者其他支持JPA的容器中,OpenJPA将自动在部署时加强类。
— Java 6类修改(class retransformation):如果运行在Java 6环境中,OpenJPA将自动地注册ClassTransformer类,并强化持久化类。
— Java 5类修改(class retransformation):如果运行在Java 5环境中,并且运行时指定了OpenJPA代理(javaagent),OpenJPA将强化持久化类。由于默认时启用加强器,所以要禁用则需要将代理的 classLoadEnhancement参数设置为false。
分享到:
相关推荐
OpenJPA is Apache's implementation of Sun's Java Persistence 2.0 API (JSR-317 JPA 2.0) specification for the transparent persistence of Java objects. This document provides an overview of the JPA ...
默认情况下,当应用程序第一次获取实体标识时,OpenJPA 框架从数据库中一次性获取 50 个连续的实体标识缓存起来,当下一次应用程序需要获取实体标识时,OpenJPA 将首先检测缓存中是否存在实体标识,如果存在,Open...
OpenJPA OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写...
openJPA官方手册,openJPA官方手册openJPA官方手册
OpenJPA API 文档 chm格式
Open JPA2 employee 简单例子
自己用openjpa些的一个基于web 的例子
JPA Overview and OpenJPA Reference Guide
Spring中使用OpenJPA源代码 博文链接:https://lxy19791111.iteye.com/blog/184997
jsf 入门知识 ,jsf标签,jsf与openJpa整合,jsf与Spring整合
使用 OpenJPA 代码增强实体类的 gradle-plugin 用法 buildscript { repositories { mavenCentral() } dependencies { classpath 'at.schmutterer.oss.gradle:gradle-openjpa:0.2.0' } } apply plugin: 'open...
Spring MVC+OpenJPA框架,只是个框架哦
OpenJPA OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。
JPA规范要求对实体对象...OpenJPA支持两种增强 方法,但强烈建议使用字节码编织增强。以下“ 实体增强” 页面包括有关两种增强类型的更多详细信息,以及有关如何在ANT,Maven和Eclipse环境中设置构建时间增强的示例。
Openjpa2.2+Mysql+Maven+Servlet+JSP 博客源码: http://blog.csdn.net/shenhonglei1234/article/details/10394379
Apache OpenJPA-自述文件 前言 感谢您下载此版本的Apache OpenJPA。 Apache OpenJPA是Java Persistence API规范的实现。 执照 此存储库的内容已根据Apache License 2.0 许可 更多信息 可以在openjpa-project子目录...
OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。...
openjpa相关jar包,开发必备,希望对各位有帮助
本文是 使用 Apache OpenJPA 开发 EJB 3.0 应用系列 的第五部分,介绍在 OpenJPA 中如何自动生成实体的唯一标识,包括使用容器自动生成实体标识,借助于数据库的自动编号、序列号、数据库表等技术自动生成实体标识等...
包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注