2010-11-28 109 views
12

我正在尝试使用Spring/JPA配置和Maven多模块项目。这是总体布局。我有一个包含5个子模块的根模块。DDD,JPA和多模块Maven

 
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). 

我在核心/ src目录/主/资源/ META-INF所有的JPA的东西(persistence.xml中,弹簧语境W/EntityManagerFactory的,数据源等)。这个想法是我想分享所有子模块(员工,供应商和客户)的持久性材料。

问题是,当Web应用程序启动时,它无法找到EntityMangerFactory。如果我在每个子模块(员工,供应商和客户)中设置JPA东西,那么它就可以工作。

如何在核心中设置所有与持久性相关的东西,然后在其他模块中共享它?

在此先感谢。

+1

您是否向员工,供应商和客户模块添加了对核心的依赖关系?老实说不知道我会让他们作为单独的模块,甚至 – willcodejavaforfood 2010-11-28 18:14:25

+0

好吧,我忘了添加上下文文件从核心到我的web.xml。现在我已经完成了web应用程序的启动,但它无法在其他模块中找到实体。 – user523078 2010-11-28 19:02:04

回答

3

好了,这里是我结束了使用的情况下任何人有兴趣的解决方案。

http://labs.bsb.com/2010/11/configuring-modular-jpa-applications-with-spring/

一些响应者问我为什么要设置这个项目这样摆在首位。那么原因是模块化。我希望所有的小型可测试和部署单位。最终,我们会将OSGI编织到组合中,以便客户可以选择他们想要安装的模块。每个模块必须能够独立运行。

-3

如果员工,供应商和客户实体和控制器在逻辑上是分开的,以至于需要将它们放在不同的模块中,那么我会说他们应该有自己的entityManager。

如果你想拥有一个单独的webapp和一个单一的entitymanager,那么为什么你想为每个实体块都有单独的模块?只需将核心员工,供应商和客户与实体经理紧密联系并完成即可。

或者,给每一个自己的EntityManager,(也许每个人自己的web应用程序)