2011-08-15 7 views
9

誰かがHibernateとJDBCに関連してオブジェクト/リレーショナルマッピング(ORM)とは何か説明できますか?HibernateとJDBCに関連するオブジェクト/リレーショナルマッピング(ORM)とは何ですか?

図は...

EDIT理解するために特に役立つだろう:私は誰かがそれが正確でORMを使用する方法の良い表現であることを確認することができ、HibernateはORMをGoogle経由でこれを見つけました。

enter image description here

SRC:http://software-carpentry.org/3_0/summary.html

答えて

29

ORMを使用すると、リレーショナルデータベースの表現としてJavaオブジェクトを使用することができます。これは2つの概念(オブジェクト指向とリレーショナル)をマップします。

HibernateはORMフレームワークです。オブジェクトがデータベース内でどのように表現されているかを記述し、hibernateが変換を処理します。

JDBCはデータベースアクセス用のAPIであり、「リレーショナルな方法で」動作します。テーブルを照会して行と列を戻します。 HibernateはJDBCを使ってデータを取得し、後でそれをオブジェクトに変換します。

jdbc ResultSetには複数のレコードがあり、各レコードには一連の列があります。休止状態では、これはList<SomeClass>となり、SomeClass has a field for every column in the database table, and there is one instance of SomeClass`がデータベースレコードごとになります。

+0

優れた回答! ORMを使用しているアプリケーションの図をHibernateに含めることができ、それをJDBCを使用しているアプリケーションの図と対照することができます。 – rrazd

+0

私はそれが良い図になるとは思わない - ORMはオブジェクトを使用する。データベースはテーブルを使用します。今、私は違いを図式的に説明する良い方法を考えることができません – Bozho

+0

投稿された写真がHibernate ORMの正当なものであることを確認できます – rrazd

4

私はHibernateで読んでいて、このスレッドを見つけました。さらなる研究をして、誰かを助けるかもしれないこの他の素晴らしい説明が見つかりました:

Hibernateフレームワークは、データベースとやり取りするJavaアプリケーションの開発を簡略化します。 Hibernateは、オープンソースで軽量のORM(Object Relational Mapping)ツールです。

ORMツールは、データの作成、データ操作、およびデータアクセスを簡略化します。オブジェクトをデータベースに格納されたデータにマップするプログラミング手法です。休止状態の

enter image description here

利点:

1)オープンソースと軽量: Hibernateフレームワークは、LGPLライセンスの下でオープンソースと軽量です。

2)高速パフォーマンス:キャッシュが内部的にhibernateフレームワークで使用されるため、hibernateフレームワークのパフォーマンスが高速です。 hibernateフレームワークの第1レベルキャッシュと第2レベルキャッシュには2種類のキャッシュがあります。第1レベルのキャッシュは、デフォルトで有効になっています。

3)データベース独立クエリ: HQL(Hibernate Query Language)は、SQLのオブジェクト指向バージョンです。これは、データベースに依存しないクエリを生成します。したがって、データベース固有のクエリを記述する必要はありません。 Hibernateの前に、プロジェクト用にデータベースが変更された場合は、メンテナンスの問題につながるSQLクエリーも変更する必要があります。

4)自動テーブル作成: Hibernateフレームワークは、データベースのテーブルを自動的に作成する機能を提供します。したがって、データベースに手動でテーブルを作成する必要はありません。

5)複雑な結合を簡略化します。 hibernateフレームワークで複数のテーブルからデータをフェッチするのは簡単です。

6)クエリ統計情報とデータベースステータスを提供します。 Hibernateはクエリキャッシュをサポートし、クエリとデータベースステータスに関する統計情報を提供します。あなたのダイアグラムで行くjavatpoint

1

から

情報は、我々はデータメンバを持つPersonクラスを持っている:ログイン、姓、姓と住所。各PersonオブジェクトのAddressは、Addressクラスのオブジェクトです。

ここでデータベーステーブルを見てください。 Personクラスに対応するPersonテーブルと、Addressクラス用のAddressテーブルがあります。今、これら2つのテーブルの間に関係があります。アドレステーブル(ID)の主キーは、Personテーブルの外部キー(addr)にマップされます。このようにして、2つのテーブル間に関係が確立されます。

私たちの人と住所のクラスについては、私たちはそのような関係はありません。つまり、アドレスを別のオブジェクトとして扱い、Personクラスと統合します。したがって、実際には、表の関係メソッドに合わせるために、オブジェクト指向の方法論と妥協しています。実際には、この問題を解決するには非常に悪い方法です。テーブル内のデータとオブジェクトを使用するクラスのデータを処理する方法には大きなギャップがあるためです。

この問題は、オブジェクト指向とリレーショナルの2つの概念に一致する、オブジェクトリレーショナルマッピング(ORM)として扱われます。 ORMを使用すると、Javaオブジェクトをリレーショナルデータベースの表現として使用できます。

HibernateはORMフレームワークです。オブジェクトがデータベース内でどのように表現されているかを記述し、hibernateが変換を処理します。

関連する問題