如何为具有多个字段的实体设计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个可能已经改变了?或者实体类是否应将标志作为成员来指示哪些字段已更改?
答案 0 :(得分:2)
您只需要将实体传递给更新,DAO将自动确定更改的字段并在数据库中更新它们。
public update(MyEntity myEntity);
然后DAO获取myEntity的id并更新数据库中的实体。
答案 1 :(得分:1)
您应该立即更新所有字段。
为什么?: 查询对象最浪费,然后与实际实体进行比较,确定哪些字段必须更新,为每个组合创建不同的PreparedStatment。最后更新这些字段。