如何设计DAO更新方法

时间:2014-11-04 16:08:05

标签: java dao

如何为具有多个字段的实体设计DAO类?

例如,对于以下实体:

public class MyEntity{

    private long id;
    private int field1;
    private String field2;
    private Date field3;
    private Date field4;
    private int field5;

}

我是否应该为每个字段创建一个DAO类,如:

public class MyEntityDao{
    public insert(MyEntity myEntity);
    public delete(MyEntity myEntity);    
    public get(long id);
    public updateField1(MyEntity myEntity)
    public updateField2(MyEntity myEntity)
    public updateField3(MyEntity myEntity)
    public updateField4(MyEntity myEntity)
    public updateField5(MyEntity myEntity)

}

这似乎是合乎逻辑的事情,但我通常只看到一个update()方法的例子。在这种情况下,DAO应该如何确定在数据库中更新哪个字段?它是否只是盲目地更新所有字段,即使只有1个可能已经改变了?或者实体类是否应将标志作为成员来指示哪些字段已更改?

2 个答案:

答案 0 :(得分:2)

您只需要将实体传递给更新,DAO将自动确定更改的字段并在数据库中更新它们。

public update(MyEntity myEntity);

然后DAO获取myEntity的id并更新数据库中的实体。

答案 1 :(得分:1)

您应该立即更新所有字段。

为什么?: 查询对象最浪费,然后与实际实体进行比较,确定哪些字段必须更新,为每个组合创建不同的PreparedStatment。最后更新这些字段。