在 DAO 中存储验证是个好主意吗?
Is it a good idea to storage validations in DAO?
我有网络应用程序。结构:接受实体的控制器和保存实体并进行一些其他操作的 DAO。在 DAO 中检查控制器中的无状态验证(例如名称大小)和状态验证(例如数据库中的重复电子邮件)是个好主意吗?有好的做法吗?你能建议一些资源或书籍吗?
Is it a good idea to storage validations in DAO?
不,不是。 DAO——顾名思义——应该仅用于来自某些数据源的 storing/retrieving 对象。大多数验证是一种业务逻辑,因此不应该属于DAO。
然而,由于性能问题,有时将一些业务逻辑放入DAO中是可以接受的。当对象检索的标准反映业务逻辑时,通常会发生这种情况。例如,要找到薪水最高的夜班员工,将所有员工加载到内存中,然后应用业务逻辑找到这样的员工,效率非常低。相反,我们可以让 DAO 执行一个简单的 SQL 查询来做到这一点。
关于您的电子邮件验证示例,是的,您可以将该逻辑放入您的 DAO 中。但作为一种好的做法,请始终命名您的 DAO 方法,以便它们负责 storing/retrieving 个对象,例如:findEmployeeByEmail(String email)
.
简而言之,将 business/validation 逻辑放入 DAO 中有时是可以接受的,但尽量使其最小化。
我有网络应用程序。结构:接受实体的控制器和保存实体并进行一些其他操作的 DAO。在 DAO 中检查控制器中的无状态验证(例如名称大小)和状态验证(例如数据库中的重复电子邮件)是个好主意吗?有好的做法吗?你能建议一些资源或书籍吗?
Is it a good idea to storage validations in DAO?
不,不是。 DAO——顾名思义——应该仅用于来自某些数据源的 storing/retrieving 对象。大多数验证是一种业务逻辑,因此不应该属于DAO。
然而,由于性能问题,有时将一些业务逻辑放入DAO中是可以接受的。当对象检索的标准反映业务逻辑时,通常会发生这种情况。例如,要找到薪水最高的夜班员工,将所有员工加载到内存中,然后应用业务逻辑找到这样的员工,效率非常低。相反,我们可以让 DAO 执行一个简单的 SQL 查询来做到这一点。
关于您的电子邮件验证示例,是的,您可以将该逻辑放入您的 DAO 中。但作为一种好的做法,请始终命名您的 DAO 方法,以便它们负责 storing/retrieving 个对象,例如:findEmployeeByEmail(String email)
.
简而言之,将 business/validation 逻辑放入 DAO 中有时是可以接受的,但尽量使其最小化。