0

我必须创建 2 个项目。为此,我将使用 Spring、JPA、JSF 和 Maven。我的项目将是 3 层架构上的结构,因此我将拥有视图、服务和 DAO 层。持久层将由带有 JPA2.0 的 hibernate 提供。
问题是这两个项目将共享大部分代码,基本上两个项目都在同一个数据库上运行,并且将共享大部分实体、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 个子项目的实体?

4

1 回答 1

0

我有同样的情况:两个具有公共域对象的 webapps,但我所有的实体都位于“域”模块中。Webapps 就像“域”后端模块的“前端客户端”。

如果您想在适当的项目中找到特定于 webapp 的实体,请尝试从 GenericDaoImpl 中删除“em”字段并将其作为参数传递给所有方法。

于 2013-08-13T16:13:05.270 回答