1

クラスの関連付けに関しては、DAO クラスを整理する最良の方法を考えています。

例えば。Customer テーブルと Order テーブルがあり、顧客に関連付けられた注文にアクセスしたいとします。たとえば、getCustomerOrder(int customerid, int orderid) のようなメソッドを配置するのに最適な場所はどこですか?

顧客クラス?クラスを注文しますか?CustomerOrder クラス?

4

2 に答える 2

0
  • CustomerOrder クラス (中央の表) を使用しているようです。
  • Customer と Order の関係は C *..* O} (多対多) です。
  • をこのクラスに配置することをお勧めgetCustomerOrder(int cusomerid, int orderid)します。これは、実行時にクラス インスタンスの仮パラメータに必要な値が Customer クラスと Order クラスの両方のスコープ内にある必要があるためです。
  • CustomerOrder が中間のテーブルである場合、関連するテーブル スキーマの参照整合性には、この使用法を強制するための制約が必要です。

中央のピボットまたはテーブルの良い例については、このリンクが気に入っています

ピボットテーブル

于 2012-07-09T01:13:12.340 に答える
0

私は実際にそれらのどれも使用しません。Customer クラス、Order クラス、および CustomerOrder クラスは、すべてビジネス ドメインに関するクラスです。getCustomerOrder(int customerid, int orderid) メソッドは、データを永続化する方法に関するものです。さまざまな理由 ( SoCSRPなど... など) で、データを永続化したい場所にデータを永続化する処理を行うクラスを配置します。1 つのオプションは、DBPersistenceSystem などです。getCustomerOrder(int customerid, int orderid) または getCustomer(int customerid) または getOrder(int orderid) のコードはかなり似ているため、これも役立ちます。それらすべてを同じクラスまたはクラスのセットに入れると、最終的により良い設計になります。

于 2012-07-09T19:45:16.770 に答える