我必须创建2个项目。为此,我将使用Spring,JPA,JSF和Maven。我的项目将是3层架构的结构,因此我将拥有视图,服务和DAO层。持久层将由hibernate与JPA2.0提供
问题是这两个项目将共享大部分代码,基本上两个项目都在同一个数据库上运行,并且将共享大多数实体,DAO甚至服务。
在谷歌搜索了一下后,我发现这项任务可以通过一个多模块maven项目实现。所以我创建了一个多模块maven项目,其中包括:
- 核心包(包含所有常用类),
- 内部webApp(将由内部用户访问)
- 外部网站(外部客户将访问)。
我在这里遇到的问题是persitence.xml位置,因为如果我将该文件放到核心包中,我就不能包含其他项目中的实体。如果我将文件放在项目中,我可以使用内部persitence.xml引用核心实体,但我想分享一些功能,即:
public abstract class GenericDaoImpl<T> implements GenericDao<T> {
@PersistenceContext(type = PersistenceContextType.TRANSACTION,unitName="CCPU")
protected EntityManager em;
不再工作了,因为eclipse“尖叫”没有名称为CCPU的持久性单元,因为persistence.xml文件不再出现在这个项目中。
首先,这是解决这类问题的正确方法吗?
最后但并非最不重要的是,我应该在何处放置持久性文件,以便能够组合所有3个子项目中的实体?
答案 0 :(得分:0)
我有相同的情况:两个带有常见域对象的webapp,但我的所有实体都位于“domain”模块中。 Web应用程序就像“域”后端模块的“前端客户端”。
如果要在适当的项目中找到特定于webapp的实体,请尝试从GenericDaoImpl中删除“em”字段,并将其作为参数传递给所有方法。