我正在尝试使用Spring / JPA配置和Maven多模块项目。这是总体布局。我有一个带有5个子模块的根模块。
backoffice (root maven module) | -(maven module)-----core (this is where persistence.xml and entityManager stuff resides). | -(maven module)-----employee (employee related entities, controllers, etc.) | -(maven module)-----vendor (vendor related entities, controllers, etc.) | -(maven module)-----customer (customer related entities, controllers, etc.) | -(maven module)-----web (contains all the web stuff).
我拥有core / src / main / resources / META-INF(persistence.xml,spring-context w / EntityManagerFactory,dataSource等)中的所有jpa内容。我的想法是希望在所有子模块(员工,供应商和客户)之间共享持久性内容。
问题是,当Web应用程序启动时,它找不到EntityMangerFactory。如果我在每个子模块(员工,供应商和客户)中设置JPA内容,那么它就可以工作。
如何在核心中设置所有与持久性相关的内容,然后在其他模块中共享它?
提前致谢。
答案 0 :(得分:4)
嗯,这是我最终使用的解决方案,以防任何人感兴趣。
http://labs.bsb.com/2010/11/configuring-modular-jpa-applications-with-spring/
一些响应者问我为什么要首先以这种方式设置项目。那么原因是模块化。我希望所有东西都在小型可测试和可部署的单元中。最终,我们将OSGI编入混合中,以便客户可以选择要安装的模块。每个模块都必须能够独立运行。
答案 1 :(得分:-2)
如果员工,供应商和客户实体和控制器在逻辑上是分开的,而在单独的模块中需要它们,那么我会说它们应该有自己的entityManager。
如果您想拥有一个Web应用程序和一个实体管理器,那么为什么您希望为每个实体块分别创建模块?只需将员工,供应商和客户置于核心,与实体经理一起完成。
或者,给每个人一个自己的实体管理员,(可能每个人都有自己的webapp)