我们小组过去常常使用泽西来构建网络应用程序。通常我们会有两个模块,dao和api。 Dao由实体类和dao接口/实现类组成,而Api模块包含所有其余的api类。最近,我们已经从Jersey转换到Spring MVC和Spring Boot。由于我们使用的是Spring Data和JPA,因此似乎不需要为所有接口和实现提供dao包。相反,JPA存储库负责所有数据访问。服务是在存储库层上构建的。将JPA存储库内容放在与服务,控制器等相同的模块中感觉更自然。
组织一个安静的网络API项目的最佳做法是什么?我应该将项目设置为两个模块应用程序,就像我们之前所做的那样,即将所有实体放在一个模块(模型或dao)中,其余模块放在另一个名为api的模块中?如果这是要走的路,我应该保留persistence.xml,其中包含实体模块或api模块中实体的所有ORM映射吗?
答案 0 :(得分:1)
这主要是我对1对2模块的看法,但我认为没有一个答案。这可能取决于Web应用程序的大小。它是同一个代码库/构建中的单个API,它是基本的CRUD,还是有许多单独但较小的API创建了更多的微服务环境。我们有一些较大的单片应用程序,我们将Dao的东西分成单独的模块。我们还将第三方依赖项(如Google或Stripe)分离为一个模块,甚至与Dao的东西分开。如果有需要,可以更容易地创建一个单独的jar。
无论如何,更重要的是你可以确保你有一种方式依赖。这意味着API依赖于DAO而不是相反。好奇别人的想法