我有Web应用程序。结构:采用实体的控制器和保存实体并执行其他一些操作的DAO。在DAO中检查控制器和状态验证(例如db中重复的电子邮件)中的无状态验证(例如名称大小)是否是个好主意?有没有好的做法?您能建议一些资源或预订吗?
答案 0 :(得分:1)
在DAO中进行存储验证是个好主意吗?
不,不是。 DAO-顾名思义-仅应用于从某些数据源存储/检索对象的目的。大多数验证都是一种业务逻辑,因此不应该属于DAO。
但是,由于性能问题,有时可以将一些业务逻辑放入DAO中。当对象检索的标准反映业务逻辑时,通常会发生这种情况。例如,要使夜班员工的薪水最高,将所有员工加载到内存中,然后应用业务逻辑来找到这样的员工,效率很低。相反,我们可以让DAO执行一个简单的SQL查询来完成此操作。
关于您的电子邮件验证示例,是的,您可以将该逻辑放入DAO中。但是,作为一种好习惯,请始终命名DAO方法,以便它们负责存储/检索对象,例如:findEmployeeByEmail(String email)
。
简而言之,将业务/验证逻辑放入DAO有时是可以接受的,但要尽量减少它。