【问题标题】:Why we use Service layer and DAO with JPA repository为什么我们将服务层和 DAO 与 JPA 存储库一起使用
【发布时间】:2016-04-04 02:26:12
【问题描述】:

为什么我们将服务层和 DAO 与 JPA 存储库一起使用。 在 spring mvc 项目中使用这种架构有什么标准吗? 我对此感到困惑,我是spring mvc的新手。 请帮我。 提前致谢。

【问题讨论】:

  • 我们一般使用服务层来抽象出DAO层。业务层不应该知道我们使用的是哪个 ORM。它应该只与服务层对话。如果您要切换 DAO 层,它也会有所帮助。
  • 当我们说使用JPA Repository(我相信你说的是Spring Data JPA)时,通常与领域驱动设计有关,而在DDD中人们通常认为Repository在Domain层,而在这种设计中没有所谓的 DAO 层。存储库通常被认为是更抽象的概念,而 DAO 服务于更多技术目的(啊......很难用这么短的一段来解释)

标签: hibernate spring-mvc jpa repository-pattern dao


【解决方案1】:

我正在使用 Spring MVC,在我的项目中我有 3 层

  1. 控制器
  2. 服务

控制器只是控制项目的进出。在控制器中我们不编写任何业务逻辑

我们把所有的业务逻辑写在服务层

在 dao 中,我们像 CRUD Operations 一样编写数据库逻辑

这样做是因为我们不希望将所有逻辑流混合在一个类中。会增加负担,难以调试

【讨论】:

    【解决方案2】:

    使用Service层有两个原因:

    1.代码模块化:

    使用服务层,我们可以将代码分成不同的层,例如 ORM 和业务逻辑。

    2。安全

    与数据库无关的服务层,那么除了通过服务之外,是否更难从客户端访问数据库。如果无法从客户端直接访问数据库(并且没有充当服务的普通 DAO 模块),那么接管客户端的攻击者所能做的就是在获得所有信息之前尝试破解服务层,但对您的数据进行最彻底的访问。

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2019-12-19
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 2011-05-21
      • 2018-03-08
      • 1970-01-01
      相关资源
      最近更新 更多