簡単な答え: サポートしたい複雑さによって異なります。
長い答え:
まず、ORM (オブジェクト リレーショナル マッピング - いわゆるデータベース マッピング) と JNDI (Java Naming and Directory Interfaces) は 2 つの異なるものです。
1 つ目は、ご存知のように、データベース テーブルをクラスとオブジェクトにマップするために使用されます。2 つ目は、リソースのルックアップ メカニズムを提供することです。リソースは、DataSource、Ejb、Queue などです。
たぶんあなたの平均「JDBC」。
さて、あなたの質問についてですが、それが簡単な場合は、ORM を実装する必要はありません。数値テーブルはせいぜい 5 ~ 10 程度で、操作は非常に簡単だと思います。
おそらくプレーンな JDBC を使用するだけで十分でしょう。
DAO パターンを使用する場合は、必要に応じて ORM 戦略をサポートするために後で変更できます。
このように: Employee テーブルがあるとします。
DB のすべてのフィールドを含む Employee.java を手動で作成し (それほど長くはかからないはずです)、次のようなメソッドを使用して EmployeeDaO.java を作成します。
+findById( id ): Employee
+insert( Employee )
+update( Employee )
+delete( Employee )
+findAll():List<Employee>
実装は非常に簡単です。
select * from employee where id = ?
insert into employee ( bla, bla, bla ) values ( ? , ? , ? )
update etc. etc
アプリケーションが複雑になりすぎた場合 (およびその場合)、DAO の実装を変更できます。たとえば、「select」メソッドでは、操作を実行する ORM オブジェクトを使用するようにコードを変更します。
public Employee selectById( int id ) {
// Commenting out the previous implementation...
// String query = select * from employee where id = ?
// execute( query )
// Using the ORM solution
Session session = getSession();
Employee e = ( Employee ) session.get( Employee.clas, id );
return e;
}
これは単なる例です。実際には、抽象的なファクトリに ORM DAO を作成させることができますが、それはトピック外です。要点は、単純に始めて、設計パターンを使用することで、必要に応じて後で実装を変更できるということです。
もちろん、技術を習得したい場合は、テーブルが 1 つでもすぐに始めることができます。
どちらを選択するか (つまり、ORM ソリューション) は、基本的に使用しているテクノロジによって異なります。たとえば、JBoss やその他のオープンソース製品の場合、Hibernate は優れています。これはオープンソースであり、学ぶべきリソースがたくさんあります。ただし、すでに Toplink を備えているもの ( oracle アプリケーション サーバーなど) を使用している場合、またはベースが既に Toplink で構築されている場合は、そのフレームワークを使用する必要があります。
ところで、Oracle は BEA を買収したため、現在は「Oracle Weblogic Application Server」と呼ばれる Kodo (weblogic 永続化フレームワーク) をトップリンクに置き換えているとのことです。
これに関する詳細情報を入手できるリソースをいくつか残しておきます。
この「エンタープライズ アプリケーション アーキテクチャのパターン」の本で、Martin Fowler は、どちらを使用するかについて説明しています。カタログは次のとおりです。データ ソース アーキテクチャ パターンとオブジェクト リレーショナル動作パターンをご覧ください。
PEAAカタログ
DAO ( Data Access Object ) は、コア J2EE パターン カタログの一部です。
DAO パターン
これは、Hibernate のスターター チュートリアルです。
休止状態
Toplinkの公式ページ:
トップリンク
最後に、JPA の良い考えは、最近プロバイダーを変更する可能性があるということです。
シンプルに始めて、次に進化させます。
これが役立つことを願っています。