快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

新葡的京集团350vip_酒文化网进入



应用持久化架构能够使数据库事务处置惩罚变得加倍轻易。Java 持久化架构(Java Persistence Architecture)是一个异常不错持久化选择,经由过程应用 JPA,您可以不再必要应用繁杂的 SQL 查询,不必担心机能问题,以及其它一些潜在的编程差错等。有很多的 JPA Persistence Provider 可供利用法度榜样开拓者来选择,如 WebSphere JPA,OpenJPA 和 Hibernate 等等。WebSphere Application Server 支持设置设置设备摆设摆设应用大年夜多半的 JPA Persistence Provider。本文将以 WebSphere JPA,OpenJPA 和 Hibernate 为例,来先容若何在 WebSphere Application Server 中应用不合的 JPA Persistence Provider。

小序

应用持久化架构能够使数据库事务处置惩罚变得加倍轻易。Java 持久化架构(Java Persistence Architecture)是一个异常不错持久化选择,经由过程应用 JPA,您可以不再必要应用繁杂的 SQL 查询,不必担心机能问题,以及其它一些潜在的编程差错等。

IBM WebSphere Application Server V7 交付了 Java Persistence API(JPA)2.0 功能部件包。 IBM JPA2.0 实现基于 Apache OpenJPA,包孕了紧张的基于标准的新特点,前进了开拓效率,同时也供给额外的 API 来增添利用的机能。

除了 WebSphere JPA 以外,现在还有很多其它的 JPA Persistence Provider 可供利用法度榜样开拓者来选择,如 OpenJPA,Hibernat,EclipseLink 等等。WebSphere Application Server 支持设置设置设备摆设摆设应用大年夜多半的 JPA Persistence Provider。本文将以 WebSphere JPA,OpenJPA 和 Hibernate 为例,来先容若何在 WebSphere Application Server 中应用不合的 JPA Persistence Provider。

先决前提

本文假定读者懂得 JPA 的相关常识,并且懂得 OpenJPA,Hibernate。有关有赞助的背景信息,请参阅参考资本。

导入示例利用

我们将应用安装了 JPA 2.0 功能部件包的 WebSphere Application Server 7.0.0.9,以 Rational Application Developer ( 简称 RAD) 7.5 为开拓情况。

为了简单,我们将应用 RAD 7.5 的一个示例利用作为举例的利用。首先必要将示例利用导入到 RAD 7.5 中。

启动 RAD7.5,打开一个空的事情区,点击 Help->Samples,在弹出的面板左侧,找到 Samples->Application Samples->EJB->EJB 3.0 Counter Sample,点击 Import Sample,示例利用就会导入到您的事情区中了。

图 1. 启动事情区

图 2. RAD 7.5 赞助面板

现在示例利用已经导入到事情区来了,接下来,您必要在 RAD 中创建一个办事器的定义。我们假设您已经筹备好一个本地单服器 WebSphere Application Server V7.0.0.9 的安装,并且也安装了 JPA2.0 功能部件包。我们还假设您已经创建了一个概要文件。(有关安装和概要文更多信息,请拜见参考资料。)

点击 Windows->Show View->Server->Servers(假如 Server 没有呈现在选项列表中的话,点击 Others,来得到更多的选项)。

图 3. 选择 Server 视图

在 servers 标签,右键 New->Server

图 4. 创建新的办事器

选择 WebSphere Application Server 7.0 并指向 WebSphere Application Server 的安装目录。假如您启用了 WebSphere Application Server 的安然性,请指定用户名和密码。现在您可以启动或竣事利用办事器,以及向其上添加利用。

图 5. 创建新的运行办事器

右键点击利用办事器,在弹出的菜单上选择“ Add and Remvoe Projects … ”,在“ Configured Project:”面板上将 EJB Counter Sample 利用移到右侧。当您点击“ Finish ”之后,利用就布署到了利用办事器上。

图 6. 添加利用到办事器上

假如您已经将设置好了您的事情空间,利用办事器,以及数据库,那么您就可以开始测试利用了。

设置设置设备摆设摆设应用不合的 Persistence Provider

您有两种要领来在 WebSphere Application Server 中应用不合的 JPA Provider。一种要领是经由过程改变 WebSpehre Application Server 的默认 Persistence Provider,别的一种要领,便是经由过程在 persistence.xml 文件中定义来指定不合的 persistence provider。接下来,将分手举例先容这两种要领。

经由过程变动 WebSphere Application Server 默认 Persistence Provider 来实现应用不合的 Persistence Provider

由于 RAD7.5 的示例利用是基于 JPA 1.0 的,以是我们必要改动 persistence.xml 和 orm.xml 文件,将其改为应用 JPA 2.0。在 EJB 3.0 Counter Sample 示例利用中,这两个文件位于 EJBCounterSample->ejbModule->META-INF 目录下。如下所示,将它们的版本从 1.0 改为 2.0。

清单 1. orm.xml

并在 persisten.xml 文件中增添如下的属性

表 1. Hibernate 属性

NameValue

hibernate.transaction.factory_class

hibernate.transaction.factory_class

hibernate.transaction.ma新葡的京集团350vipnager_lookup_class

org.hibernate.transaction.WebSphereExtendedJTATransactionLookup

jta.UserTransaction

java:comp/UserTransaction

表 2. OpenJPA 属性

NameValue

openjpa.Log

openjpa.Log

openjpa.TransactionMode

openjpa.TransactionMode

openjpa.ConnectionFactoryMode

Managed

清单 2. persistence.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"

xsi:schemaLocation="http://java.sun.com/xml/ns/persi新葡的京集团350vipstence

http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

jdbc/EJB3SampleDatasource

com.ibm.websphere.ejb3sample.counter.JPACounterEntity

true

value="org.hibernate.transaction.CMTTransactionFactory"/>

value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"/>

接下来,您必要下载 Hibernate 指定的第三方 ja r 文件,并把它们加入到 WebSphere Application Server 的共享库中。您可以从 Hiberante 的网站高低载这些 jar 文件。下面这些 jar 文件,是包管本示例利用正常事情所必要 jar 文件。

antlr-2.7.6.jar

commons-collections-3.1.jar

hibernate-jpa-2.0-api-1.0.0.Final.jar

dom4j-1.6.1.jar

hibernate3.jar

javassist-3.9.0.GA.jar

jta-1.1.jar

slf4j-api-1.5.8.jar

您还必要下载 OpenJPA 指定的 jar 文件,可以从 apache 的网站高低载。下面这些 jar 文件,是包管本示例利用正常事情所必要 jar 文件。

commons-collections-3.2.1.jar

commons-lang-2.1.jar

commons-pool-1.5.3.jar

serp-1.13.1.jar

openjpa-2.0.0.jar

或者为了简单,也可以应用 openjpa-all-2.0.0.jar。

您可以直接将这些 jar 文件放到利用办事器的 lib 目录中去,然则为了有更好的可掩护性,我建议创建一个共享库(Shared Library)。这样做,您可以使每一个利用办事器,节点,以及集群都可以应用这个共享库,而不必要覆盖掉落其它正在被应用的 jar 文件。接下来,我们就来创建一个共享库,打开 WebSphere Application Server 的治理节制台。在左侧导航条上找到 情况 -> 共享库。创建一个新的共享库,名为 JPA-Shared Libraries。在类路径文本框里,把这些 jar 文件的所在完备路径名都填入类路径文本框中。假如是在散播式情况中,请应用 WebSphere 变量来定义。

图 7. 创建 Hiberante 共享库

对付 OpenJPA,您必要勾选上 为该共享库应用零丁的类加载器。

图 8. 创建 OpenJPA 共享库

接下来,您必要将利用办事器与共享库关联起来。在 WebSphere Application Server 的治理节制台中,选择 办事器 -> 办事器类型 ->WebSphere 利用服各器。打开利用办事器 Server1 属性页面,在页面的右侧,打开 Java 和进程治理,并选择 类装入器。创建一个新的类装入器,并选择类已装入并且先应用利用法度榜样类装入器。

图 9. 创建类装入器

在创建的类装入器的页面右侧,选择共享库引用。添加您在前一步创建的共享库。这样办事器就会鄙人一次启动时加载这些 jar 文件了。

图 10. 添加共享库

对付 OpenJPA,您不能将利用办事器与该共享库关联起来,由于 WebSphere 默认的 JPA wsjpa 会将其覆盖。您必须将您的利用与该共享库关联起来。到利用定义的页面 利用法度榜样 -> 利用法度榜样类型 ->WebSphere 企业利用法度榜样 ->EJBCounterEAR。在利用法度榜样属性页面,选择 引用 分类下的 共享库引用,在共享库引用页面,选择 EAR 中的每一个模块(假如您不确定哪个一个模块应用了 JPA),添加刚才创建的共享库。

图 11. 添加共享库

现在利用办事器和利用法度榜样都可以造访 JPA Provider 了,您可以指定是否应用 WebSphere Application Server 默认的 wsjpa Provider。

可以经由过程治理节制台来变动默认 provider,在左侧导航条上,点击 办事器 -> 办事器类型 ->WebSphere 利用办事器,选择 Server1,在利用办事器属性页面打开容器办事,选择 默认 Java 持久化 API 设置。在该页面上,显示了 WebSphere 供给的两个默认的 Persistence 新葡的京集团350vipProvider:WebSphere 实现的 JPA 和 OpenJPA。您也可以经由过程选择第二个单选按扭,来填入像 Hibernate 这样的第三方 JPA Provider。

接下来,我们经由过程改变 WebSphere 默认的 Persistence Provider 并来一一验证 WebSphere JPA、OpenJPA 和 Hibernate 是否能够正常装载。

经由过程 http://localhost:port/EJBCounterWeb/counter,来造访利用法度榜样并验证它是否正常事情。

应用 WebSphere JPA 作为默认的 JPA Persistence Provider

此时不要在办事器(server1)上以及利用法度榜样上加载 OpenJPA 和 Hiberante 的共享库。

在 /profiles/

/logs//SystemOut.log,您可以找到下面这段翰墨证实此时加载的是 WebSphere JPA :

JPAComponentI I CWWJP0026I: The Java Persistence API (JPA) component is initializing.

JPAComponentI I CWWJP0006I: The com.ibm.websphere.persistence.PersistenceProviderImpl class is loaded as the default Java Persistence API (JPA) provider.

JPAComponentI I CWWJP0027I: The Java Persistence API (JPA) component has initialized.

应用 OpenJPA 作为默认的 JPA Persistence Provider

此时必要在利用法度榜样上加载 OpenJPA 的共享库,并且改变利用办事器(server1)的默认 Persistence Provider 为 OpenJPA,从新启动利用办事器。

在 /profiles/

/logs//SystemOut.log,您可以找到下面这段翰墨证实此时加载的是 OpenJPA:

JPAComponentI I CWWJP0026I: The Java Persistence API (JPA) component is initializing.

JPAComponentI I CWWJP0006I: The org.apache.openjpa.persistence.PersistenceProviderImpl class is loaded as the default Java Persistence API (JPA) provider.

JPAComponentI I CWWJP0027I: The Java Persistence API (JPA) component has initialized.

应用 Hiberante 作为默认的 JPA Persistence Provider

此时必要在利用办事器 (server1) 上加载 Hiberante 的共享库,并且改变利用办事器 (server1) 的默认 Persistence Provider 为 Hibernate JPA (org.hibernate.ejb.HibernatePersistence),从新启动利用办事器。

在 /profiles/

/logs//SystemOut.log,您可以找到下面这段翰墨证实此时加载的是 Hiberante JPA:

JPAComponentI I CWWJP0028I: The Java Persistence API (JPA) component is starting. JPAComponentI I CWWJP0006I: The org.hibernate.ejb.HibernatePersistence class is loaded as the default Java Persistence API (JPA) provider.

JPAComponentI I CWWJP0017I: The Java Persistence API (JPA) component has started.

经由过程在 persistence.xml 文件中定义来指定不合的 Persistence Provider

假如您盼望经由过程编程的要领来改变您的 Persistenc新葡的京集团350vipe Provder,您可经由过程改动 persistence.xml 文件来实现,仅必要加上

标签即可。

改动 persistence.xml 文件,在我们的例子中,

清单 3. 经由过程编程试指来改变 Persistence Provider

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"

xsi:schemaLocation="http://java.sun.com/xml/ns/persistence

http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

com.ibm.websphere.persistence.PersistenceProviderImpl

OR

org.hibernate.ejb.HibernatePersistence

OR

org.apache.openjpa.persistence.PersistenceProviderImpl

jdbc/EJB3SampleDatasource

com.ibm.websphere.ejb3sample.counter.JPACounterEntity

true

value="org.hibernate.transaction.CMTTransactionFactory"/>

value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"/>

验证正在应用的 JPA Provder

假如您是变动了利用办事器的默认 JPA Provder,您必要从新启动利用办事器,经由过程查看 SystemOut.log 来验证您正在应用的 JPA Provider。

假如您是经由过程编程要领在改变利用法度榜样应用的 JPA Provider,您不必要从新启动利用办事器,而是必要在利用法度榜样中增添如下的代码来验证加载的是哪个 Persistence Provider。

清单 4. 验证加载 Persistence Provider 的代码

清单 4. 验证加载 Persistence Provider 的代码

void showJPAProvider() {

System.out.println("////////////////////////////////);

System.out.println("JPA Provider Implementation: "

+ emf.getClass()); System.out.println("/////////////);

}

确保上面这个措施能够在 SystemOut.log 中显示 Entity Manger Factory 类,而且这个类是在任何 JPA 被调用的时刻应用的类。上面的措施会打印出 JPA 实现措施,例如,org.apache,com.ibm,org.hibernate,等等。

清单 5. SystemOut.log 里面的输出结果

SystemOut O /////////////////////////////////////////

SystemOut O JPA Provider Implementation:

class com.ibm.ws.persistence.EntityManagerFactoryImpl

SystemOut O /////////////////////////////////////////

停止语

本文先容了两种变动 JPA Provider 的要领,一种经由过程变动 WebSphere Application Server 的默认 JPA Provder;另一种是经由过程编程的要领经由过程增添

标签来指定不合的 J新葡的京集团350vipPA Provider。您可以在实际利用中根据必要选技您相宜的方适来应用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: