JPA と JDBC の違いは何ですか? 質問する

JPA と JDBC の違いは何ですか? 質問する

私は Java EE を学習中で、そのために GlassFish 付きの Eclipse をダウンロードしました。Java EE 5 についてすべて知るために、いくつかの例を見て、Oracle のドキュメントも読みました。データベースへの接続は非常に簡単でした。動的 Web プロジェクトを開き、セッション EJB を作成し、EntityManager を使用し、get メソッドを使用して保存されたデータ テーブルにアクセスできました。

次のプロジェクトでは、単純なクラスを作成して、いくつかの DB テーブルにアクセスする必要がありました。最初に遭遇した問題は、PersistenceUnit 属性が EJB、Servlet などでのみ認識され、単純な Java クラスでは認識されないことでした。そのため、EntityManager の方法を使用できませんでした (または、使用できるのでしょうか?)。

「JDBC」方式で進めるよう求められました。最初に遭遇した問題は、DB への接続を取得することでした。このすべてをハードコードする必要があるようです。persistence.xml があり、これを使用してデータベース接続を簡単に構成できました。DB のドライバーの設定も簡単でした。また、JDBC にはテーブル エンティティにアクセスするための get/set メソッドがありません。

JPA と永続性を JDBC との関係でどのように理解すればよいでしょうか? JPA は何のために考えられたのでしょうか? なぜ set/get メソッドがあるのでしょうか? 誰か、これら 2 つの本質と、専門用語を使わずに長所と短所について説明してもらえませんか? また、リンクもいくつか提案してください。 JPA と JDBC の違いについて Google で簡単に検索したところ、理解できない「用語」が満載のサイトがいくつか見つかりました :(

ベストアンサー1

簡単に言うと:

  • JDBCはデータベースアクセスの標準です
  • JPAはORMの標準です

JDBC は、DB に直接接続し、それに対して SQL を実行するための標準です (例:SELECT * FROM USERSなど)。アプリで処理できるデータ セットを返すことができ、、、ストアド プロシージャの実行など、通常の操作をすべて実行できます。INSERTこれDELETEは、ほとんどの Java データベース アクセス (JPA プロバイダーを含む) の基盤となるテクノロジの 1 つです。

従来の JDBC アプリの問題の 1 つは、データ セットとオブジェクトの間で多くのマッピングが行われたり、ロジックが SQL に混在したりするなど、粗雑なコードになることが多いことです。

JPA はオブジェクト リレーショナル マッピングの標準です。これは、コード内のオブジェクトとデータベース テーブル間のマッピングを可能にするテクノロジです。これにより、開発者から SQL を「隠す」ことができ、開発者が扱うのは Java クラスだけになり、プロバイダによってそれらを保存して魔法のように読み込むことができます。ほとんどの場合、XML マッピング ファイルまたはゲッターとセッターの注釈を使用して、オブジェクトのどのフィールドが DB のどのフィールドにマッピングされるかを JPA プロバイダに伝えることができます。最も有名な JPA プロバイダは、休止状態なので、具体的な例を知るには良い出発点となります。

その他の例としては、OpenJPA、toplink などがあります。

内部的には、Hibernate や JPA の他のほとんどのプロバイダーは SQL を記述し、JDBC を使用して DB の読み取りと書き込みを行います。

おすすめ記事