快速业务通道

使用RSA V7.5中的UML-to-JPA转换加速JPA开发 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
jpa.enhance.PCEnhancer)对实体类进行处理的 过程,被 Enhance 过的实体类能够支持性能优化、懒惰式装载等高级特性。 JPA 规范约定容器必须在部署时对 JPA 实体进行增强,对于非容器运行的情况, 您可以选择运行时增强或者编译时增强。

通常情况下,编译时增强更加 受欢迎,因为不需要运行时添加特别的参数。但是如果没有开发工具的支持,您 可能需要在命令行调用编译命令。幸运的是,RSA 允许我们为项目配置多种编译 ,我们可以使用 JPA 提供的 ANT 任务来实现编译时增强,这种配置是一劳永逸 的。首先我们需要创建一个 build.xml 文件,请参考清单 4 的内容在 SampleModelPersistence 项目中创建 build.xml。

清单 4. build.xml 的内容

<project default="enhance">    <target name="enhance">   <taskdef name="openjpac"  classname="org.apache.openjpa.ant.PCEnhancerTask" />      <openjpac>      <config  propertiesFile="${basedir}/bin/META-INF/persistence.xml" />      <classpath<      <pathelement  location="${basedir}/bin"/>      </classpath>     </openjpac>   </target> </project>

然后我们需要为 JPA 的增强创建一个单独 的 builder,请选择 SampleModelPersistence 项目,单击右键菜单中的 Properties 菜单,在弹出的对话框中的左侧树中选择 Builders 节点,如图 17 ,在右侧的属性页中选择“New..”按钮。

图 17. 为 SampleModelPersistence 项目创建 JPA 增强 Builder

使用RSA V7.5中的UML-to-JPA转换加速JPA开发(11)

时间:2010-11-20 IBM 赵勇 黄若波 任静安

在打开的对话框中进行该 Builder 的配置,首先输入 builder 名称 “JPA _Builder”,然后配置设置项目基础路径和 ANT 编译脚本的 位置,具体的配置值请参考图 18。

图 18. JPA 编译时增强的配置

同样在 Targets 页面中,设定 build 的目标为“enhance”,在 Class path 页面中需要增加 JPA 的 jar 包 (com.ibm.ws.jpa.thinclient_7.0.0.jar )到编译路径中。点击 OK 保存设置 ,此时运行编译项目,RSA 就会自动的对编译后的实体类进行二进制代码级别的 增强。

单元测试

到此我们就可以通过单元测试在非服务器环境中 测试 JPA 的持久化功能了。请参考下载资料中的 SampleModelPersitenceTest 项目,在 ModelTest 类中我们的 testSaveInvoice 测试方法可以很好的使用 JPA 的 API 自动保存 Invoice 实体,避免了我们在保存和加载持久化对象时使 用大量重复的 SQL 语句和映射代码。通过清单 5 中的测试代码,我们可以看到 ,由 JPA Transformation 生成的 JPA 实体可以很好的和数据库交互。

清单5. 用于测试持久化实体的JUNIT测试用例

package  my.sample.test; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import  javax.persistence.Persistence; import  javax.persistence.Query; import  junit.framework.TestCase; import my.sample.Invoice; public class ModelTest extends TestCase {   public void  testSaveInvoice(){     Invoice invoice= new Invoice ();     invoice.setStoreName("MyStore");      invoice.setPaymentType("Credit");     EntityManagerFactory  emf=Persistence.createEntityManagerFactory("MyModelJPA");      EntityManager em = emf.c

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号