\r\n\r\n
JPAとHibernate
ほとんどすべてのエンタープライズ・アプリケーションは、リレーショナル・データベースへの定期的なアクセスを必要とします。しかし、JDBCのような初期の技術が直面した問題の1つは、インピーダンスミスマッチ(オブジェクト指向とリレーショナル技術の違い)であった。javapersistenceapi (JPA) は、特にJavaアプリケーションでリレーショナルデータを管理するために設計されたフレームワークです。Java開発者のコミュニティでは、JPAの多くのベンダーの実装があります。Hibernateは最も人気のあるJPA実装です(DataNucleus、EclipseLink、OpenJPAは他の実装の一部です)。2010年3月にリリースされたhibernate 3.5では、JPAの最新バージョン(jpa2.0)が完全にサポートされています。
JPAとは?
JPAとは、Javaでリレーショナルデータを管理するためのフレームワークです。JSE(Java Platform, Standard Edition)またはJEE(Java Platform, Enterprise Edition)を使用したアプリケーションで使用することができます。jpaは、EJB2.0とEJB1.1のエンティティビーン(Java開発者コミュニティから重いと強く批判されていた)を置き換えるものである。EJBのエンティティビーンは永続的なオブジェクトを提供しますが、多くの開発者は比較的軽量のオブジェクトを提供するDAO(Data Access Objects)や他の類似のフレームワークを使用することに慣れています。そこで、上記のようなフレームワークの優れた機能の多くを取り入れたJPAが登場したのです。
JPAで記述される永続性は、JPQL (Java Platform, Enterprise Edition)とAPIが必要とするメタデータ(定義についてはjavax.persistenceを参照)リレーショナルオブジェクトを対象としています。永続的なエンティティの状態は、通常、テーブルに永続化されます。エンティティのインスタンスは、リレーショナルデータベースのテーブルの行に対応する。メタデータは、エンティティ間の関係を表現するために使用される。エンティティクラスのメタデータを指定するには、コメントまたは別のXML記述子ファイル(アプリケーションと一緒に配備)を使用します。 JPQLはSQLクエリに似ており、保存されたエンティティに問い合わせるために使用されます。
冬眠とは?
Hibernateは、Javaプログラミング言語で使用できるオブジェクトリレーショナルマッピングのフレームワークです。具体的には、オブジェクトリレーショナルモデルを従来のリレーショナルモデルにマッピングするためのORM(object-relational-mapping)ライブラリである。簡単に言うと、Javaクラスとリレーショナルデータベースのテーブル、およびJavaとSQLのデータ型との間のマッピングを作成します。その結果、プログラマーは結果セットと変換オブジェクトを手動で処理する必要がなくなりました。hibernateはGNUライセンスの下でリリースされた無料のオープンソースフレームワークです。Gavin Kingは、Hibernateの創設者です。
JPAとHibernateの違いは何ですか?