`
conkeyn
  • 浏览: 1504351 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

OpenJPA的增强器

阅读更多

      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。

分享到:
评论
1 楼 string2020 2016-10-19  
不使用增强器  怎么弄?

相关推荐

    Apache OpenJPA 2.1 User's Guide

    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范例及实例工程

    默认情况下,当应用程序第一次获取实体标识时,OpenJPA 框架从数据库中一次性获取 50 个连续的实体标识缓存起来,当下一次应用程序需要获取实体标识时,OpenJPA 将首先检测缓存中是否存在实体标识,如果存在,Open...

    OpenJPA 2.2.1 API (CHM格式)

    OpenJPA  OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写...

    openJPA官方手册

    openJPA官方手册,openJPA官方手册openJPA官方手册

    OpenJPA API 文档 chm格式

    OpenJPA API 文档 chm格式

    Open JPA2 employee 简单例子

    Open JPA2 employee 简单例子

    openjpa 写的一个例子

    自己用openjpa些的一个基于web 的例子

    openjpa-manual

    JPA Overview and OpenJPA Reference Guide

    Spring中使用OpenJPA

    Spring中使用OpenJPA源代码 博文链接:https://lxy19791111.iteye.com/blog/184997

    jsf、openJpa学习

    jsf 入门知识 ,jsf标签,jsf与openJpa整合,jsf与Spring整合

    gradle-openjpa:使用 OpenJPA 代码增强实体类的 gradle-plugin

    使用 OpenJPA 代码增强实体类的 gradle-plugin 用法 buildscript { repositories { mavenCentral() } dependencies { classpath 'at.schmutterer.oss.gradle:gradle-openjpa:0.2.0' } } apply plugin: 'open...

    Spring MVC+OpenJPA框架

    Spring MVC+OpenJPA框架,只是个框架哦

    Openjpa手册

    OpenJPA OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。

    apache-openjpa-3.1.0-binary.zip

    JPA规范要求对实体对象...OpenJPA支持两种增强 方法,但强烈建议使用字节码编织增强。以下“ 实体增强” 页面包括有关两种增强类型的更多详细信息,以及有关如何在ANT,Maven和Eclipse环境中设置构建时间增强的示例。

    Openjpa2.2+Mysql+Maven+Servlet+JSP source code

    Openjpa2.2+Mysql+Maven+Servlet+JSP 博客源码: http://blog.csdn.net/shenhonglei1234/article/details/10394379

    openjpa:Apache OpenJPA

    Apache OpenJPA-自述文件 前言 感谢您下载此版本的Apache OpenJPA。 Apache OpenJPA是Java Persistence API规范的实现。 执照 此存储库的内容已根据Apache License 2.0 许可 更多信息 可以在openjpa-project子目录...

    apache-openjpa-2.2.1-source

    OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。...

    openjpa jar

    openjpa相关jar包,开发必备,希望对各位有帮助

    openjpa实体标识的生成策略

    本文是 使用 Apache OpenJPA 开发 EJB 3.0 应用系列 的第五部分,介绍在 OpenJPA 中如何自动生成实体的唯一标识,包括使用容器自动生成实体标识,借助于数据库的自动编号、序列号、数据库表等技术自动生成实体标识等...

    JPA教程,包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

    包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

Global site tag (gtag.js) - Google Analytics