为现有项目设计DAO模型

时间:2012-04-03 20:09:32

标签: java dao

我见过的大多数DAO示例都包含仅涉及一个表的简单查询。

我正在努力重构没有DAO的项目,该项目包含大量使用多个表的SQL查询。我的问题是如何最好地为DAO设计模型?在下面的示例中,我可以创建一个涵盖每个特定查询的对象。但是我不确定这是否是好的做法。例如有一个对象代表每个数据库表更好吗?

CustomerPaymentDAO以涵盖此查询:

select
    a.username,
    p.creation_date,
    p.amount,
    c.card_type
from
    account      a,
    payment      p,
    payment_type t,
    payment_card c
where
...

CustomerPurchaseDAO来涵盖此查询:

select
    a.username,
    i.name,
    i.cost,
    c.name,
    v.value
from
    account      a,
    item         i,
    category     c,
    voucher      v
where
...

1 个答案:

答案 0 :(得分:1)

一般来说,有两种选择:

  1. 创建与每个表对应的实体,并指定必要的关系(多对多,多对一,一对一)。

  2. 在数据库中为每个查询创建一个视图,并在每个视图的基础上创建实体(在您的示例中 - 两个视图+两个实体)。

  3. 第二种情况适用于只读对象。如果需要创建/更新/删除实体,则需要创建与每个单独表对应的实体。