【问题标题】:Should DAO methods receive a data object as parameter or just its contents?DAO 方法应该接收数据对象作为参数还是仅接收其内容?
【发布时间】:2019-08-21 10:26:49
【问题描述】:

我正在考虑 DAO 的两种不同方法,我想知道哪种方法更正确。假设我们有以下类:

public class Employee {

private int id;
private String name;

//getters and setters

}

DAO 有以下两种方法:

一)

public class EmployeeDao {

    public Employee insert(int id, String name) {
    ...
    }

B):

public class EmployeeDao {

    public Employee insert(Employee employee) {
    ...
    }

我的问题是这两种方法是否正确和/或其中一种方法是否比另一种更正确。

感谢您的关注。

【问题讨论】:

    标签: design-patterns dao


    【解决方案1】:

    我觉得这个方法比较好

    public class EmployeeDao {
    
        public Employee insert(Employee employee) {
           //Operations
        }
    

    因为如果你想为DAO的操作添加新的属性,这个方法保持dao的实现不变,而不是第一个方法强制你做这样的事情,如果dao很多,它就会变得受限

    public class EmployeeDao {
    
        public Employee insert(int id, String name, Object otherObject) {
           //Operations
        }
    

    【讨论】:

    • 另一方面,如果我们更改 Employee 类,那么我们也应该在 Employee 表中执行相应的更改,从而在 DAO 中执行。例如。如果我将“地址”字段添加到 Employee,那么我们还应该将“地址”列添加到表中并为此更改插入实现。
    • 是的,但是如果你有DAODatabaseJson、DAODatabaseXml、DAODatabaseHibernate,并且只有在DAODatabaseJson中你想添加json反序列化json的信息,如果你使用第二种方法你可以保持其他DAO不变,但是如果您有具有相同接口的不同 DAO 并向函数添加新参数,则必须更改所有 DAO 方法
    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多