【问题标题】:Is it a good idea to storage validations in DAO?在 DAO 中存储验证是个好主意吗?
【发布时间】:2019-04-26 07:42:49
【问题描述】:

我有网络应用程序。结构:获取实体的控制器和保存实体并执行其他操作的 DAO。这是在 DAO 中检查控制器中的无状态验证(例如名称的大小)和状态验证(例如 db 中的重复电子邮件)的好主意。有没有好的做法?你能提供一些资源或书籍来获得它吗?

【问题讨论】:

    标签: design-patterns dao


    【解决方案1】:

    在 DAO 中存储验证是个好主意吗?

    不,不是。 DAO - 顾名思义 - 应该仅用于从某些数据源存储/检索对象的目的。大多数验证是一种业务逻辑,因此不应该属于 DAO。

    但是,由于性能问题,有时将一些业务逻辑放入 DAO 是可以接受的。当对象检索的标准反映业务逻辑时,通常会发生这种情况。例如,要获得最高工资的夜班员工,将所有员工加载到内存中然后应用业务逻辑来查找这样的员工是非常低效的。相反,我们可以让 DAO 执行一个简单的 SQL 查询来做到这一点。

    关于您的电子邮件验证示例,是的,您可以将该逻辑放入您的 DAO。但作为一种好的做法,请始终命名您的 DAO 方法,以便它们负责存储/检索对象,例如:findEmployeeByEmail(String email)。

    简而言之,将业务/验证逻辑放入 DAO 有时是可以接受的,但请尽量减少。

    【讨论】:

    • 它是业务逻辑层(也称为域层),不同于控制器/DAO。对于小型应用程序(您实际上并不需要关注点分离),您可以将业务逻辑放入控制器中。请注意,纯控制器的工作不是做业务逻辑,而是解释用户请求并转发到域层。
    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 2013-11-09
    • 2015-09-30
    • 2018-11-20
    • 2010-10-30
    • 2018-11-18
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多