データベースアクセスレイヤーをJavaで実装する方法はたくさんありますが、他の言語でも同じパターンが適用されます。最も単純な形式は、テーブルデータゲートウェイです。このパターンには、データベーステーブルごとにゲートウェイインスタンスがあります。 DALのその他のパターンはです。テーブル行ゲートウェイテーブル内のデータベース行ごとにゲートウェイインスタンスが存在します。 アクティブレコード。ドメインオブジェクトは、データベース自体と通信する方法を知っています。 Data Mapperここで、データはドメインオブジェクトとデータベースの間で移動され、互いとマッパー自体は独立しています。 これらのアプローチのそれぞれには、さまざまな賛否両論があります。私が言及したパターンを調べ、あなたのアプリケーションに最適なものを見てみましょう。
ドメインオブジェクトタイプごとに明示的で明瞭な型セーフなインターフェイスを提供することが、基本DAO(TDG、TRG、あなたのもの)をサブクラス化する主な理由は、クライアントが適切なデータアクセス機能彼らはユースケースを実装するために必要です。同じコードがベースクラスで抽象化されています...
アプリケーションの開始段階にある場合は、データアクセス(たとえば、Hibernateなど)を処理するためのツールを使用することをお勧めします。これらのツールは非常に一般的なもので、何百万もの問題がありますが、少なくともビジネスロジックを正しく理解し、アプリケーションドメイン外のこれらの問題を心配することに集中することができます。結局のところ問題が発生し、ソフトウェアが成功したように見える場合は、パフォーマンスを向上させるためにデータアクセスや、選択したツールが提供しているその他の頭痛に取り組むことができます。私はこれを言っているに過ぎません。なぜなら、自国の優れたデータアクセスソリューションを作るのはむしろ難しく、時間がかかるからです。並行性の問題、データベースIDからメモリインスタンス(s!)へのマッピングなどを考えてください。
ResultSetに関する質問はありますか?いいえ。getObjectは、このResultSetオブジェクトの現在行にある指定された列の値をObjectとして取得します。したがって、あなたは自分自身でキャストを行う必要があります。また、このパスを下った場合、ドメインオブジェクトのFactoryをResultSetから取得することをお勧めします。
これは大きな話題であり、すべてのパターンを詳細に取り入れることができない場合は申し訳ありません。私も自分自身で仕事をしています:-)あなたが "標準"ツールを使う代わりにあなた自身のものを作ることに決めたら、私がここで言及しているパターンのどれかを理解した後で、あなたのニーズに最適なスイート。
よろしくお願いいたします。