如何使用常见的JPA实体布局的Java EE项目?

我有两个Eclipse的Java EE使用maven 3.现在,他们应该分享JPA实体在其中一个项目中3,因为它们都使用同一个数据库中的一个WAR文件打包的6个项目。

在做我的问题的研究,我发现了一些线索提例如在persistence.xml中一个共同的罐子的引用,但我没有成功,使其工作。 所以特意问:

1)项目是否包含常见的实体,具有persistence.xml文件? 如果是这样,它是如何从一个在其他项目有什么不同?

2)到底是如何常用的实体在两个项目中引用? 我用的标记在他们的persistence.xml参考? 如果是这样,将“LIB / MyCommon.jar”是使用正确的方式,如果MyCommin.jar位于WEB-INF / lib目录?

3)它不作任何区别,如果应用程序部署为WAR或JBoss的6展开的​​归档?

4)当通过除此之外日食内部署到服务器运行时和发布,有什么部署,从Eclipse之外有什么不同?

5)所描述的方式把普通实体一个单独的项目,创建一个JAR,并使用该JAR中的其他项目一个合理的方法来处理分享共同的实体类或是否有更好的方法的问题?

--------------解决方案-------------

1)项目是否包含常见的实体,具有persistence.xml文件? 如果是这样,它是如何从一个在其他项目有什么不同?

是。 主要的区别是, persistence.xml的示范项目应该定义的所有实体,而且persistence.xml的web项目应该只是参考模型项目的JAR文件。 否则,你一直重复的entites中persistence.xml文件。

另一种可能的不同之处在于一个在模型项目应在项目内使用资源本地事务类型,以便单元测试从(使用例如main()方法)是很容易完成的。 在Web项目中的人当然应该由使用JTA如一个数据源。


2)到底是如何常用的实体在两个项目中引用? 我使用<jar-file>标记在自己的persistence.xml参考? 如果是这样,将“LIB / MyCommon.jar”是使用正确的方式,如果MyCommin.jar位于WEB-INF / lib目录?

Yes和No.的<jar-file>是正确的方式,但你在文件名 ​​中有一个错字,应该被忽略的文件夹。 在lib文件夹,当你的耳朵通常只使用和JAR包含在EAR的lib文件夹中。

<jar-file>MyCommon.jar</jar-file>


3)它不作任何区别,如果应用程序部署为WAR或JBoss的6展开的归档?

号正确设计的Java API的不依赖本地磁盘文件系统上,但只是在类路径中。 它使类路径没有区别,如果战争扩大与否。


4)当通过除此之外日食内部署到服务器运行时和发布,有什么部署,从Eclipse之外有什么不同?

从技术上来说,是的。 在功能上,没有。


5)所描述的方式把普通实体一个单独的项目,创建一个JAR,并使用该JAR中的其他项目一个合理的方法来处理分享共同的实体类或是否有更好的方法的问题?

它使绝对意义。 你不想重复自己。

从我的经验,每个瓶子必须有一个持久的XML,这意味着每个EntityManager的将被绑定到一个XML持久性。 这意味着,为了有涉及来自不同的罐子实体的交易,你需​​要使用JTA商。 避一下我上面提到的一种选择,就是有一些Ant或Maven任务来组装不同的罐子类放入其中包含最终XML持久性一个新的罐子。

话虽如此,在我使用的是共享工程把我的实体项目中,我不得不结束了把我所有的实体(原因上面)。

现在我认为要做到这一点的最好办法,是把系统分解成垂直模块,每个模块管理它自己的实体,可以仅仅通过ID引用其他模块实体。 这是我发现建立SOA应用和普通应用过的最好办法。 之所以这样做,是它大大减少了实体和模块之间的耦合也。

有几个问题要问自己

  • 你真的要2个不同的应用程序更新相同的数据库表?
  • 你会怎样做,如果你需要更新一个应用程序,但另一个应保持不变?
  • 不要实体暴露的更多信息,应用程序真正需要的?
分类:java的 时间:2012-01-28 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.193 (s). 9 q(s)