java - DAOManager - 对象验证应该在这里完成还是在特定的 DAO 类中完成?

标签 java database validation dao

我有一个带有 DAOManager 的类设置,并为我需要与之交互的表设置了单独的 DAO 类。当我想从数据库中插入或删除对象时,有必要验证对象。我应该验证 DAOManager 类中相应方法中的对象还是特定 DAO 类中的对象?当然也可以在调用 DAOManager 之前验证对象。哪个选项最好?

public class DAOManager {
  public void insertIntoTable(Object obj) {
    //Validate here? 
    exampleDAO.insert(Object obj);
  }
}

public class ExampleDAO() {
  public void insert(Object obj) {
    //Or validate here?

    //Insert logic... 
  }
}

最佳答案

我会选择使用 validateOnInsert()、validateOnDelete() 方法创建抽象类“ObjectValidation”,...

如果您的 DAO 不需要验证,则所有单个 DAO 都应该实现该类并将特定逻辑添加到验证中,返回 true 并继续管理器进程。

public class ExampleDAO() extends DAOValidation{
    public void insert(Object obj) {
         if(validationOnInsert(obj)){...}
    }
    public boolean validateOnInsert(Object obj) {
         //your validation here
    }
    public boolean validateOnDelete(Object obj) {
         //your validation here
    }
}

可能不同的人有不同的方法来解决这个问题,但我认为 DAO 是应该了解类本身的所有业务逻辑的类,管理者应该充当向 DAO 请求操作的分发者

关于java - DAOManager - 对象验证应该在这里完成还是在特定的 DAO 类中完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279254/

相关文章:

python - 如何使用pyodbc备份数据库

MySQL:如何更新所有现有条目的自动增量?

php - Symfony2 - 如何验证自动完成实体表单类型?

java - Android Studio 请求应用程序权限无法编译显示错误 : array dimension missing

java - System.out.println 从多个 java 源文件中删除/注释

java - Swing 应用程序中的 SWT 托盘图标

database - SubSonic.Query 与 SubSonic.SqlQuery

java - 自定义注释不验证方法参数

字符串 base64 的 javax.validation 注释

java - 使用 CURRENT_TIMESTAMP 作为 ORMLite 和 SQLite 字段的默认值