1

私は Java プログラミングが初めてで、DAO デザイン パターンを実装する正しい方法を理解しようとしています。以下に例を示します。populateItemCatalog および searchitemCatalog メソッドを含む itemCatalog クラスがあります。アイテム カタログは、タイプ アイテム オブジェクトの配列を使用して実装されました。

次に、DAO 設計に切り替えて、ms-access データベースから同じデータにアクセスしたいと考えています。私の質問は、DAO がデータベースの検索を行っている現在、これらのメソッドがどうなるかということです。DAO から DTO を返すように変更しますか。私の質問が明確であることを願っています。ありがとう

4

2 に答える 2

1

通常、これがどのように機能するかです。

オブジェクトの DAO インターフェイスを実装します。あなたの場合、CatalogDao.

これには、必要なすべてのデータ アクセス方法が含まれている必要があります。

さて、DAO パターンの背後にある考え方は、同じものを複数実装できるということです。

あなたの場合、それのMS-Access実装があります。これにより、すべてのデータベース固有のロジックが非表示になり、POJO が返されます。

通常、DTO は別のものです。通常の意味では、クライアントとサーバーの通信で使用されるオブジェクトを意味します。たとえば、POJO を xml または json に変換できます。クライアントから呼び出されたとき。

これは全然違います。

つまり、アプリケーション層が Java オブジェクトを直接処理できるように、DAO はデータベース実装の詳細をアプリケーション層から隠します。

public interface ItemCatalogDao{
  ItemCatalog searchItemCatalog(Long itemId)
}

そして、可能な実装の1つは

public class ItemCatalogDaoMsImpl implements ItemCatalogDao{

  public ItemCatalogDaoMsImpl(){
    //do your initialization code here , such as getting connection etc
}
  public ItemCatalog searchItemCatalog(Long itemId){
   //write your sql code here
}
    }
于 2012-11-09T05:09:01.170 に答える
1

あなたが言うように; ここで、別の DB から同じデータを取得したいとします。このような場合、DAO パターンが最適です。

    public interface ItemCatalogDAO extends GenericDAO<DTO, String> {
   public DTO populateCatalog(String id); 
       public searchCatalog(String x);
     }

これで、実装クラスは上記の (サンプル) インターフェイスを実装する必要があります。すべての実装クラスで使用できるようにインターフェイスを設計するようにしてください。

あなたが尋ねたように、DTOを返すことができますか?はい、要件に応じて DTO または DTO のリストを返す必要があります。DAO からオブジェクトを返すことをお勧めします。このようにして実装を抽象化し、ジェネリックの使用もサポートします。

于 2012-11-09T05:28:09.363 に答える