Design patterns DAO方法应该接收数据对象作为参数,还是只接收其内容?

Design patterns DAO方法应该接收数据对象作为参数,还是只接收其内容?,design-patterns,dao,Design Patterns,Dao,我在考虑两种不同的刀的方法,我想知道哪一种更正确。假设我们有以下课程: public class Employee { private int id; private String name; //getters and setters } DAO有以下两种方法: (A) B) : 我的问题是这两种方法是否正确,或者其中一种方法是否比另一种更正确 谢谢您的关注。我认为这种方法更好 public class EmployeeDao { public Employee insert

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

public class Employee {

private int id;
private String name;

//getters and setters

}
DAO有以下两种方法:

(A)

B) :

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


谢谢您的关注。

我认为这种方法更好

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中,那么我们还应该将“地址”列添加到表中,并为此更改insert实现。是的,但如果您有DAODatabaseJson、DAODatabaseXml、DAODatabaseHibernate,并且仅在DAODatabaseJson中,您希望添加json反序列化json的信息,如果使用第二种方法,可以保持另一个DAO不变,但是如果使用同一接口的不同DAO并向函数添加新参数,则必须更改所有DAO方法
public class EmployeeDao {

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

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