利用RSA V7.5中的UML-to-JPA转换加快JPA开拓
副标题#e#
本文先容 Rational Software Architect(RSA)V7.5 中最新的 UML-to-JPA 转换,它答允利用者在 UML 工具模子长举办 JPA 设置和数据模子设计,并能快 速生成带 JPA 注解的 Java 类,可以将开拓人员从频繁的反复事情中解放出来 。当在 O/R Mapping 开拓进程中因需求变革而带来模子和代码的频繁变革时, 利用 RSA 的 UML-to-JPA 转换东西可以有效的低落项目迭代中的反复事情,同 时也有利于担保工具模子和数据模子的一致性,对付应用开拓人员和设计人员都 有着重要的现实意义。
本文主要面向 Java 耐久化开拓和设计人员,假 定读者对 Java O/R Mapping 和 JPA 有根基的相识,您也可以拜见参考资料以 相识更多 JPA 和 Java 耐久化相关的常识。本文将主要先容利用 JPA Transformation 开拓 JPA 应用。
筹备事情
JPA 简介
持 久化就一直是 Java 开拓人员体贴的话题,由于 EJB 的耐久化过于重量级,产 生了许多的 Java 耐久化框架,O/R Mapping 可以将我们从沉重的数据库存储和 工具序列化的事情中解放出来,而且使得开拓人员可以机动的应对需求的变革而 带来的数据库的变革和工具模子的变革,可以或许淘汰维持此他们之间的映射的代码 的变革。最新的 JPA 的类型更划定了 Java 耐久化的尺度 API 和设置方法,他 同时支持注解和设置文件。在实际的利用进程中,我们体会到 JPA 成果的强大 ,同时也感觉到必然水平的不利便。利用映射设置文件时,每次数据库可能工具 模子的微小变革都需要从头修改设置文件,假如利用注解,固然元素据和 Java 代码绑定,可是假如代码是由 UML 等模子转换过来,那么每次修改后从头转换 ,还需要从头增加 JPA 元素的注解。同时,注解是分手在每个 Java 类文件中 的,缺乏一种有效的会合打点机制,修改和维护也不是很利便。因此假如可以或许从 UML 模子直接转换成 JPA 的注解,我们就可以在模子条理上一致的来打点 JPA 的元数据,很洪流平上淘汰了开拓人员的事情量。本文将着重先容在 RSA7.5 中 如何设置 JPA Transformation 的 profile 和 stereotype,将不具体先容 JPA 注解自己以及 RSA 开拓 JPA 的通例要领,读者如有需要,请参考相关资料。
JPA Transformation UML profile 简介
从 UML2.0 开始,UML 类型引入了一个很是重要的观念:UML profile (提要),它答允 UML 语言能 被适配到特定的规模,用户可以自由的实现客户化的 UML profile,并基于这些 UML profile 的扩展本领建设特定的规模模子。UML profile 为独立于规模的 UML 提供了简朴的扩展机制,它可以或许支持界说规模特定的实体和法则。最新版的 RSA7.5 版本中就内置了一些辅佐我们开拓和建模的 UML profile,个中包罗我 们本文利用到的 JPA Transformation profile。您可以参考“用于软件服 务的 UML 2.0 profile”一文以相识更多在 RSA 中利用 UML profile 的 用法。 profile 主要由 stereotype (结构型)构成,结构型界说哪个 UML 类 (元类)与其关联、该类上的属性以及有关结构型元素如何与其他元素关联的约 束。譬喻,在 RSA 中的 JPA Transformation profile 中,Entity 结构型扩展 Class UML 元类。它说明我们可以将一个 UML Class 声明为 JPA 这个规模内的 一个实体。同样对付 Entity 类中的属性,profile 划定了我们可以对其应用的 一些结构型如 ID,Column 等,通过对工具模子应用差异的结构型,并对这些构 造型配置相应的属性值,JPA Transformation profile 答允我们完整的表达 JPA 的语义。共同 JPA Transformation 成果,用户可以将颠末定制后的类图可 以直接转化会带注解的 JPA Java 类,可以或许加快利用 JPA 作为耐久层的开拓过 程,并使工具模子和耐久化模子保持一致。
示例利用的 UML 模子
本文将回收图 1 中描写的工具模子为例来说明 如何应用 RSA 中的 UML-to-JPA 转换成果来加快 JPA 的开拓。
图 1. 示例用工具模子
#p#副标题#e#
这个简朴的工具模子,主要用于描写超市的购物小票,个中 Invoice 暗示小 票工具,Customer 暗示会员客户,每个小票可以关联到 1 个客户,假如有客户 则暗示会员(对应客户持有超市会员卡),可能没有客户。小票上打印的 InvoiceItem 可以是一般商品,商品折扣,可能会员积分。
以上模子完 全为了本文说明问题而虚构的。假定此刻需要实现以上模子的耐久化,这切合 JPA 开拓的正向映射的场景,是一个典范的自顶向下的开拓模式。以耐久化工具 的模子作为开拓的起点,颠末设置和 JPA 的转换,生成带注解的 JPA 实体类, 利用 JPA 配子文件和 API 完成实体耐久化成果。假如利用如 Apcahe OpenJAP 这样的东西,开拓进程如下:由 UML 工具模子转化生成 Java 类,给这些 Java 类写设置文件可能增加注解,在利用东西按照设置生成数据库,然后就可以利用 JPA 的 API 在运行时操纵耐久化工具。这个是典范的正向映射,假如模子是确 定的,上述开拓进程会较量顺利,只需要举办一次,也没有反复的劳动,也不会 发生模子的纷歧致。可是,在现实的开拓进程中,工具模子和数据库老是处于变 化之中,在迭代的开拓进程中,一旦需求产生变革,模子要变革,从头转化为 Java,然后设置文件可能注解要随着变革,从头生成数据库,而且要保持模子和 Java 以及设置的一致性。假如您曾经从事雷同的开拓,就会深切的相识到这种 反复的事情会给开拓人员带来多大的承担。
#p#分页标题#e#
IBM 最新的 RSA7.5 版本, 为开拓人员提供了一种先进的模子驱动开拓的体验,通过 JPA Transformation profile 提供了可以扩展 UML 工具模子成为 JPA 设置模子的本领,答允开拓人 员和建模人员在 UML 类图级别举办 JPA 的设置,担保了工具模子和耐久化设置 的一致性,并通过自动化的转换可以直接快速的实现 JPA 的开拓。您可以在下 载资料中下载该模子的项目互换文件(SampleModel.zip),导入到 RSA7.5 的 事情区中,凭据本文的步调实验利用 JPA Transformation 的路程。本文还提供 了一个 JUNIT 测试用例来测试 JPA 的耐久化 API。
为 UML 模子应用 JPA Transformation profile
在这一小节,您将相识到如作甚 UML 工具 模子设置的 JPA Transformation profile,限于篇幅,本文仅接头一些常见的 JPA 注解如安在模子上利用 stereotype 设置,更多巨大的配置请参考相关文档 。
为模子添加 profile 支持
为了利用 JPA Transformation 的 profile,我们需要首先为模子应用该 profile。您可以在 RSA 的项目欣赏器中 选中模子文件的 package,在右键菜单中的选择 UML Properties,打开 UML Properties 对话框来为模子添加 JPA Transformation 的 profile。在打开的 “UML Properties”对话框中,点击右上角的图形按钮,如图 2,在 弹出的“Select profile”对话框中选择 JPA Transformation,点 击OK就使得该模子可以支持 JPA Transformation profile 的扩展了。
图 2. 为模子添加 JPA Transformation profile 支持
设置 Entity 和 ID
一旦为模子添加了 JPA Transformation profile 支持,开拓人员就可以在 UML 类图上定制 JPA 的属性。首先我们利用 JPA 中最重要的设置元素:Entity。如图 3,选中一个 UML Class,在 Properties 页面中选择 stereotypes 标签页,然后点击“Apply stereotypes” 按钮,在弹出的对话框中选择 Entity。这样就能为该 Class 扩展了 Entity 的信息,对付 JPA Transformation 措施来说,它就会在 执行转换时将该 UML Class 模子转化为一个带 Entity 注解的 Java 类。
图 3. 为 UML Class 应用 Entity stereotype
Entity 结构型还答允用户举办一些参数的配置,如 Catalog,Schema,Name 等,默认的表名会和实体类的范例一致(不含 package 名),而 Schema 会和 ORM.XML 中界说的 Schema 一致,因为我们回收自上而下的模子,数据库会按照 JPA 的设置自动生成,为了简化开拓,我们这里不需要举办非凡配置,实体 stereotype 的属性设置回收默认值。
JPA 要求每个 Entity 必需至少使 用一个 ID 字段来独一标识,我们的模子利用简化的单个字段主键来简化开拓。 如图 4,在类图中选中 Invoice 实体,选择 InvoiceNo 属性,在 Properties View 的 stereotypes 标签页,点击“Apply stereotypes”,选择 ID 和 GeneratedValue。这样就为 InvoiceNo 属性附加了 ID 的扩展,同时还 设置了自动生成值的成果。
图 4. 为实体设置 ID 和 GeneratedValuestereotype
请在属性设置页面中选择自动生成值的设置,这里我们选择“ID Entity”计策,说明生成的 ID 值是全局独一的,拜见图 5。请凭据同样 的要领设置 InvoiceItem 的 itemID 和 Customer 的 CustomerNo。
图 5. 为 InvoiceNo 字段设置 stereotype 的属性
由于 JPA 会默认的将类名映射到表名,属性映射到表的字段,工具之间的关 系映射到表之间的外键干系,因此,颠末以上的简朴设置,我们的模子就可以在 最小水平上利用 JPA 的成果,是已经可以利用的 JPA 转换设置了,在开拓快速 原型的时候,这样可以极大的简化我们的开拓和设置事情。请凭据同样方法设置 Cutomer 实体的 CutomerNo 和 InvoiceItem 的 itemID 的 ID 和 GeneratedValue stereotype。
设置 Entity 的 Column
#p#分页标题#e#
大大都时 候,我们需要对实体的属性作出一些设置,这是就需要对类的属性应用 Column 这个 stereotype,如图 6 可见,所有 JPA 类型中对 Column 的规约,您都可 以在该 stereotype 的属性中设置,如字段的名称,长度,精度等。简化起见, 这里我们差池字段的名称做设置,一切利用默认值,系统所生成的数据库的表中 的字段名会和属性名称一致,这里我们会设置 Invoice 的所有 Decimal 范例的 属性的精度,如图 6,对付所有的 Decimal 范例,我们配置 scale 和 precision。Scale 暗示小数点后头的位数,这里我们利用 2 位。Precision 表 示精度,这里我们用 12 位。同时请留意属性页中的 Column Definition 配置 ,您可以在此界说建表时建设此列的 DDL,利用该字段,您可以更机动的设置实 体属性对应的数据库的表字段。对所有的字符串范例的属性,我们瞥见其默认的 长度是 255,这里我们回收默认值,假如有须要,您可以修改该设置。
图 6. 设置实体的 Column stereotype
实体担任干系配置
JPA 对付实体之间的担任干系是通过设置实体的 InheritanceType 结构型的 strategy 来实现,JPA 界说了以下三种设置方法:
InheritanceType.SINGLE_TABLE:为类的担任体系回收同一个表,会容 纳所有子类的字段;
InheritanceType.JOINED:为类担任体系中的每个 类建设差异的表,每个表只包括类中界说的列;
InheritanceType.TABLE_PER_ Class。
在 JPA Transformation profile 中,您需要为父类应用 Inheritance stereotype 来设置以上计策,如 果不设置,系统的缺省值是 InheritanceType.SINGLE_TABLE。在 SINGLE_TABLE 和 JOINED 环境下,父类对应的表中会有一个 Discriminator 字段用于标识不 同的子类范例。同时可觉得每个子类应用 Discriminator stereotype 以设置该 子类实例在父表 Discriminator 的字段中的值,假如不设置,就会默认利用子 类的名字。在JOINED环境下,您可以通过将父类的 ID 设为 protected 来制止 子类反复添加 ID 字段,这样父表和子表利用沟通名字的 ID 字段。凡是环境下 ,JOINED 的计策利用较多,它可以消除数据库表中的冗余字段,因此类型化级 别较量高。如图 7,这里我们对 InvoiceItem 设置 Inheritance 的 strategy 就是 JOINED。
图 7. 设置 InvoiceItem 的 Inheritance stereotype
实体关联干系配置
实体之间的关联干系可以通过选择类图中工具的关 系(类之间的关联线),并应用 RelationshipOptions stereotype 来举办设置 。如图 8,您可以在 UML 编辑器中选择 Invoice 和 InvoiceItem 之间的关联 线来应用“RelationshipOptions”这个 stereotype。
图 8. 对实体关联干系举办 JPA 设置
如图 8,RelationshipOptions stereotype 有三个可设置的值,我们的设置 环境见表 1:
表 1. Invoice 和 InvoiceItem 的关联干系的 JPA 设置
属性 | 属性寄义 | 属性值配置 |
cascade | 设置关联干系的增删查改的级联操纵 | 因为Invocie对 InvoiceItem的完全节制干系,我们这里设置为ALL, 在Invocie产生任何变革时,JPA 城市级联的对该 Invoice 的所有 InvoiceItem 执行同样的操纵。 |
fetch | 设置加载方法,分为早加 载和懒加载 | 由于 Invoice 对 InvoiceItem的干系较量细密,这里设置 为早加载(EAGER)。 |
optional | 是否可选 | 配置为 false,必选。 |
默认环境下,JPA 实体关联干系是没有级联配置的,加载方法也是早加载,假如您不想修改默认值 ,就不需要应用该 stereotype。请凭据同样设置 Invoice 和 Customer 的干系 ,请将级联设置为无需级联,将加载改为懒加载,Optional也为 false。
到此为止我们先容了一些根基的 JPA 注解如何通过 JPA Transformation 的 profile 举办设置。在 RSA7.5 中,大部门常用的的 JPA 注解都可以通过设置 JPA Transformation profile 的 stereotype 来自动生成 。此时,我们的 UML 模子已经附加了较为完整的 JPA 语义,已经可以利用 JPA Transformation 举办转换了。
应用 UML-to-JPA 模子转换
建设 和设置转换
#p#分页标题#e#
在 RSA 中的选择菜单栏的“Modleing”- >“Transform”->“New Configuration”菜单, 在弹出的对话框中选择” UML-to-JPA”转换,某些环境下您需要选 择“Show all Transformation s”选择框才气在下拉列表中找到该 转换,如图 9,此时需要在弹出的”Confirm Enablement”对话框中 选择OK按钮。
图 9. 选择 UML-to-JPA 转换
在 Name 输入框中输入转换的名称“SampleModel2 JPA”,点击 Next,如图 10,在 Source and Target 页面中选择 “SampleModel”作为 Source,点击“Create Target Container..”按钮以建设一个 JPA 项目作为转化生成的 JPA 实体类的容 器。
图 10. 选择建设一个 JPA 项目作为转换方针的容器
如图 11,在弹出的“New JPA Project”的对话框中,输入项目 名称“SampleModelPersistence”,用户可以设置是否在处事器情况 中利用 JPA,这里为了简化问题,我们选择 TargetRuntime 为 None,选择 Configuration 为“Utility JPA project with Java 5.0”,而且 不选择 “Add project to an RAR”这样就可以离开处事器利用 JPA ,同时有助于我们利用 JUNIT 测试代码快速的测试耐久化措施的正确性。
图 11. 新建 JPA 项目标选项配置
如图 11,配置完成后直接点击 Finish 建设完成,后还可以举办其他 设置。如图 12,在“Properties 页面”,对付是否自动生成 NamedQuery,这里我们选择 false,假如选择 true,会自动为每个字段生成一 个 NamedQuery,会减低 JPA 的效率。对付是否生成 equals 要领和 hashCode ,我们选择 true,这样可以更好的辅佐我们举办开拓。如图 13,在 Collections 对付 Collection,Set 等设置,发起统一利用 List,这样简化开 发,在举办工具和工具之间的转换编程时,也可以做到简朴一致。
图 12. 对 UML-to-JPA 转换的属性设置
图 13. 对荟萃的转换设置
至于 Mapping 页面中可以手工的设置映射转换法则,这个成果合用于相识 其转换道理的高级用户。一般开拓人员无需利用。
运行转换
如图 14,您可以通过转换编辑器的“Main”页面点击 Run 按钮来运行这 个转换了,请留意运行页面上的根基选项(Conceptual,Mixed,Reconciled) ,本文所选典型属于从工具到数据库的一种自上而下的模式,因此我们选用 Conceptual 的转换模式,老是回收正向转换。
图 14. JPA 转换设置的 主页面
运行完成后可以瞥见在 SampleModelPersitence 项目中生成了 UML 模子对 应的 Java 类,所有的 Java 类中已经增加了相应的 JPA 的注解。此时我们还 需要设置一下 JPA 的设置文件,首先编辑 Persistence.xml,输入清单 1 中的 内容使得 JPA 知道要耐久化哪些实体。
清单 1. Persistence.xml的内 容
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="MyModelJPA">
<class>my.sample.CreditItem</class>
<class>my.sample.Customer</class>
<class>my.sample.DiscountItem</class>
<class>my.sample.Invoice</class>
<class>my.sample.InvoiceItem</class>
<class>my.sample.PriceItem</class>
</persistence- unit>
</persistence>
然后编辑 Orm.xml ,如 清单 2,输入耐久化单位需要对应的默认 Schema,这里我们的数据库中利用 MYSAMPLE 这个 Schema。
清单 2. Orm.xml的内容
#p#分页标题#e#
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>MYSAMPLE</schema>
</persistence- unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
JPA 耐久化代码的运行时设置
此刻我们的 JPA 设置文件和带 JPA 注解的 Java 工具已经生成了,可 以举办相关的测试了,这里我们回收非容器情况的测试,在简朴的 Java 代码中 就可以测试利用 JPA 来操纵耐久化代码,首先我们举办情况的设置。
编 译和运行时情况配置
由于WebSphere Application Server V7(WAS7)已 经中已经包括了 JPA 的实现(包装了 OpenJPA ),假如开拓的是 WAS7.0 的服 务器端措施,在 RSA 中的情况变量就包括了对 JPA 的 jar 包的引用,因此无 需做特别配置。假如是离开处事器利用 JPA,您需要将 JPA 的 jar 包添加到上 述 SampleModel JPA 项目标类路径中,本文的示例利用 WAS7 中的 JPA 包,参 见图 15。
图 15. 利用 RSA 的测试情况中的 JPA jar 包
另外我们的测试数据库回收简朴的 Derby 数据库,您只需要将 derby.jar 文件添加到 SampleModel JPA 项目标类路径中,测试时就可以利用 Derby 数据 库了,请参考图 16 获取到 derby.jar。
图 16. 利用 RSA 中的 WAS7 测试情况中的 derby 数据库
此时我们需要在 persistence.xml 文件中添加数据库的设置,参考清单 3 设置 JPA 的数据库信息。
清单 3. 设置了数据库毗连后的 persistence.xml
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="MyModelJPA">
<class>my.sample.CreditItem</class>
<class>my.sample.Customer</class>
<class>my.sample.DiscountItem</class>
<class>my.sample.Invoice</class>
<class>my.sample.InvoiceItem</class>
<class>my.sample.PriceItem</class>
<properties>
<property name="openjpa.ConnectionDriverName"
value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="openjpa.ConnectionURL"
value="jdbc:derby:C:\DerbyDB\MYSAMPLE;create=true"/>
<property name="openjpa.ConnectionUserName" value=""/>
<property name="openjpa.ConnectionPassword" value=""/>
<property name="openjpa.jdbc.Schema" value="MYSAMPLE"/>
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema" />
</properties>
</persistence-unit>
</persistence>
设置 JPA 的加强
Enhance 是使 用 OpenJPA 必需的一个步调,所谓 Enhance 是指利用 OpenJPA 提供的东西 PCEnhancer(org.apache.openjpa.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>
#p#分页标题#e#
然后我们需要为 JPA 的加强建设一个单独 的 builder,请选择 SampleModelPersistence 项目,单击右键菜单中的 Properties 菜单,在弹出的对话框中的左侧树中选择 Builders 节点,如图 17 ,在右侧的属性页中选择“New..”按钮。
图 17. 为 SampleModelPersistence 项目建设 JPA 加强 Builder
在打开的对话框中举办该 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.createEntityManager();
em.getTransaction().begin();
em.persist(invoice);
em.getTransaction().commit();
Query query=
em.createQuery("select obj from Invoice obj where obj.invoiceNo=:invoiceNo");
query.setParameter ("invoiceNo", invoice.getInvoiceNo());
Invoice invoice2=(Invoice)query.getResultList().get(0);
assertTrue(invoice.equals(invoice2));
em.close() ;
}
}
测试完成后,您的应用措施 就可以利用雷同的挪用代码来举办 Java 工具的耐久化操纵了,这会节减你大量 的时间,尤其当 JPA 注解和设置文件修改后,通过运行 JUNIT 测试用例,您可 以快速简直定 JPA 耐久化措施没有受到影响。虽然,在实际的出产情况中,你 需要更多巨大的 JPA 配置,RSA 7.5 中的 JPA Transformation profile 支持 险些所有的 JPA 注解的设置成果,您可以参考 RSA 的辅佐文档以获取更为具体 的信息。
总结
Java 耐久化技能的成长使得措施员从大量的 Java 工具与数据库表的映射代码中摆脱出来,提高了开拓的效率。JPA 作为一种尺度 化的 Java 耐久化办理方案,已经获得极大的应用,可是在实际的开拓进程中, 由于需求的变革,开拓人员不得不举办许多反复的事情。通过本文的示例,读者 可以相识到 RSA7.5 中的 JPA Transformation 为我们的耐久化方案提供了一种 模子驱动的开拓的途径,答允我们在工具模子层面长举办 JPA 耐久化元数据的 设置,并可以或许自动将模子转换为 JPA 实体,在自顶向下和迭代的开拓进程中可 以最大限度的淘汰开拓人员的冗余事情,可以或许有效的提跨越产率。同时 JPA 提 供了大量简化的默认配置,可以简化我们的开拓设置。虽然,JPA 等耐久化框架 并不能完全取代传统的数据库应用,高机能的查询和数据处理惩罚仍然需要利用传统 的方法处理惩罚,JPA 的存眷点在于辅佐我们淘汰工具耐久化的冗余代码,使得开拓 人员可以或许会合于应用逻辑,提高开拓效率。
原文地点:http://www.ibm.com/developerworks/cn/rational/r-cn- rsav75umltojpa/