如何使用常见的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
分享到:

相关文章

  • 升级GlassFish v2中到JPA 2.0? 2012-11-16

    我试图使用Hibernate 3.5.5和Spring HibernateJpaVendorAdapter在Glassfish V2,但我发现,当Spring上下文被初始化以下异常: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode()Ljavax/persistence/SharedCacheMode; 在org.hibernate.ejb.util.LogHelp

  • CriteriaQuery中使用JPA 1.0 2015-01-29

    是否有可能使用CriteriaQuery中使用JPA 1.0. 我想JPA 2.0不具备的Java SE(版本 - 的Java(TM)SE运行时环境(建设1.6.0_16-B01)). 我绑在使用, CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Test> cq = cb.createQuery(Test.class); Root<Test> test= cq.from(Test.class); .... 但

  • 如何绘制一个二维矩阵在Java中休眠/ JPA? 2012-03-13

    我有一个旧的数据库,我试图重新设计带入21世纪. 一个现有的数据结构包括其中包含的值的2维矩阵的特定类. 如果我是逆向工程这一类从数据库中,我结束了一个系列一样的属性: private BigDecimal NODE_1_MATRIX_POS_1_1; private BigDecimal NODE_1_MATRIX_POS_1_2; 等等. 由于这是一个6x6的矩阵,有很多这样的列. 我一直在寻找一种更好的方式,但我不知道我在那里. 我想要做的是这样的: @Entity public clas

  • 在Java中的OAuth 2.0开源实现 2012-06-10

    我们不久将建立一个原型,这将起到OAuth的客户端与网站,如Facebook互动的作用. 要求是我们使用OAuth 2.0(知道它仍处于草案状态). 你知道的OAuth的2.0客户端库中的任何开源的Java实现? 我们的目标是用它在我们的原型,助长了项目如果可能的. --------------解决方案------------- 如使用Facebook的leeloo.smartam.net符合OAuth的2.0草案10,同样的:看看最新发布的Java库. 看看图书馆的OAuth消费者(爪哇) 看

  • 有没有在Java中的OAuth 2.0 Provider实现? (不OAuth客户端) 2014-08-20

    所以基本上我要保护我的API使用OAuth 2.0和实施一个OAuth提供者,使acquiry accessTokens等. 可以将其与JOAuth进行开箱? 有没有人已经实现了这样的事情有一个开放源码库(Java)的? --------------解决方案------------- Apache的琥珀(http://oltu.apache.org/)使得它相当简单构建的OAuth2提供商. 看到: https://cwiki.apache.org/confluence/display/OLTU

  • Eclipse中,JPA 2.0元模型生成器和Spring Roo的合作 2014-07-03

    有没有办法把Spring Roo的和JPA 2.0元模型生成器一起工作? 我有一个Spring Roo的项目,并使用Eclipse作为IDE. 我可以配置Eclipse项目和Maven的pom.xml使用JPA 2.0元模型生成器在编译/编译过程. 问题是,在发电机不产生元模型类的小豆实体(即,被annotatted与域类@Roo*注释). 我创建了一个实体"手动",并确认发电机的配置是否正确. 我怀疑是生成失败的Roo的实体,因为它不理解AspectJ的IDT类. 有没有一种方法,使

  • JPA(休眠,的EclipseLink)映射:为什么没有此代码的工作(2关系中使用JPA 2.0,链@EmbeddedId复合PK-FK)? 2012-02-13

    我有三个表: CREATE TABLE PostAddresses ( contact_id INTEGER NOT NULL, ordinal_nbr SMALLINT NOT NULL, PRIMARY KEY (contact_id, ordinal_nbr) ); CREATE TABLE Foos ( contact_id INTEGER NOT NULL, ordinal_nbr SMALLINT NOT NULL, PRIMARY KEY (contact_id, ordinal_

  • 通过与秩序通过翻译一TypedQuery到CriteriaQuery中(JPA 2.0),最大,最小,组 2012-05-15

    我有一个翻译以及工作typedQuery到纯JPA 2.0 CriteriaQuery中的一些挣扎:/ 继我的工作typedQuery: String name = "Station1"; Query qry = em.createQuery(" select YEAR(s.fetchDate), MAX(s.actExport)-MIN(s.actExport), MIN(s.actExport), MAX(s.actExport) from StationItem s w

  • 不能在Java中,JPA确实删除 2012-01-14

    我有下面的代码. 问题是,在第二行我得到"org.apache.openjpa.persistence.TransactionRequiredException:当一个事务处于活动状态只能执行操作" 第一行执行的罚款. 什么是我的错? //em is some EntityManager String s = (String)em.createQuery("SELECT something FROM something WHERE something = something&

  • Java中,春天3.0.5与Apache集成瓷砖2.2.2 2013-12-29

    下面这个教程:http://viralpatel.net/blogs/2010/07/spring-3-mvc-tiles-plugin-tutorial-example-eclipse.html 瓷砖配置(tiles.xml): <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation

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

55228885 版权所有 京ICP备15002868号

processed in 1.944 (s). 10 q(s)