5

たくさんのDAOを書き直そうとしています。設定は次のとおりです。

  • プレーンJDBCのみ(JPA、ORMは一切ありません)
  • インターフェイスは使用されていません
  • オブジェクトを挿入する前にたくさんのチェック
  • ビジネスオブジェクトは強力にリンクされています

私の主な質問は、他の複数のオブジェクトで構成されるビジネスオブジェクトを永続化/取得するにはどうすればよいですか?たとえば、私のCustomerDAOはAddressDAOを知っていて、そこからcsutomersアドレスを取得しますか?

4

3 に答える 3

1

プレーンJDBCのみ(JPA、ORMは一切含まない)ビジネスオブジェクトは強力にリンクされています

ビジネスオブジェクトをリンクしたいときにJPAを使用したくない理由はわかりませんが、少なくとも、ボイラープレートコードから解放されるSpringJDBCテンプレートを使用する必要があります。

その他の制約については、次のようにします。

  1. 私はまだインターフェースを使用してDAOメソッドを定義し、それらをバックアップされたSpringJDBCテンプレートに実装しますDAOImpl。どこでもDAOを使用し、DAOImplを注入します。
  2. 私のDAOは、基礎となるテーブルへの単純な1対1のマッピングであり、各DAOは他のDAOの存在を認識しません。
  3. My Managerレイヤーには、検証チェックを実行し、永続化する必要のあるオブジェクトのセットを準備し、適切なDAOと適切なメソッド(CREATE / UPDATE / DELETE)を呼び出してオブジェクトを永続化するすべてのビジネスロジックがあります。
  4. この場合も、Managerレイヤーはインターフェイスベースの実装に従い、ViewレイヤーにはManagerImplsが挿入されたマネージャータイプがあります。

私の2セント!

于 2012-09-09T13:03:52.693 に答える
0

JOOQの使用を検討してください。これはJPAではありませんが、代替ソリューションとして簡単に使用できます。十分軽量です。また、データベースエンティティをDAOオブジェクトとして構築するリバースエンジニアリングツールも提供します。

私は、アプリケーションがかなり設計された関連する状況にJOOQを埋め込みました。JDBC Layerの混乱を避けるために、DAO機能を上位レイヤーとして使用するのではなく、DAO機能を使用しませんでした。

乾杯!

于 2012-09-09T13:51:26.677 に答える
0

複合エンティティは、DAOの上のレイヤーです。すべての結合を削除する場合、DAOによって永続化されるドメインオブジェクトは、関係なしでフラットである必要があります。コアJ2EEパターンCompositeEntityを参照してください。

また、一方のファインダーをもう一方のファインダーに配置することにより、DAO間に結合を導入しないことをお勧めします。例えば:

AddressDAO.findForCustomerId(id);

関係を管理するために3番目のDAOを使用するよりも劣ります。IE:

CustomerAddressRelDAO.findAddressForCustomer(id);

関係DAOを使用する場合、住所も顧客も相互に依存(または認識)していません。

于 2016-01-15T23:13:13.813 に答える