3

私が見たDAOの例のほとんどは、1つのテーブルのみを含む単純なクエリで構成されています。

複数のテーブルが使用されているSQLクエリが多数あるDAOを使用しないプロジェクトのリファクタリングに取り組んでいます。私の質問は、DAOのモデルを最適に設計する方法です。以下の例では、特定の各クエリをカバーするオブジェクトを作成できます。しかし、これが良い習慣であるかどうかはわかりません。たとえば、各データベーステーブルを表すオブジェクトを1つ持つ方がよいでしょうか。

このクエリをカバーする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
...
4

1 に答える 1

1

一般的に、2つのオプションがあります。

  1. 各テーブルに対応するエンティティを作成し、必要な関係(多対多、多対1、1対1)を指定します。

  2. データベースで、クエリごとにビューを作成し、ビューごとにエンティティを作成します(この例では、2つのビュー+ 2つのエンティティ)。

2番目のケースは、読み取り専用オブジェクトには問題ありません。エンティティを作成/更新/削除する必要がある場合は、各単一テーブルに対応するエンティティを作成する必要があります。

于 2012-04-03T20:26:50.033 に答える