2016-07-11 4 views
-1

私はJavaの初心者で、オブジェクト・リレーショナル・マッピングについて読んでいました。私は、このリンクでオブジェクト/リレーショナル・ミスマッチという用語を見つけました。Hibernateオブジェクト/リレーショナル・ミスマッチとは

Javaに関してオブジェクト/リレーショナル・ミスマッチは誰でも説明できますか? 私もhaacked.comからそれについて読むことができましたが、それを正しく得ることができませんでした。

+0

[オブジェクト・リレーショナル・マッピング・フレームワークとは何か?](0120-18753) –

+0

重複しないその質問のように、誰もオブジェクトリレーショナルミスマッチについて議論していません。そこからオブジェクトリレーショナルマッピングを読みますが、そこでは誰も議論していないオブジェクトリレーショナルミスマッチに混乱がありました。 –

答えて

3

HibernateはORM(オブジェクトリレーショナルマッピング)ツールです。主な目的は、クラス、継承、フィールドなどのオブジェクト指向プログラミングの概念を、テーブル、行、列などのリレーショナルデータベースで使用される概念に変換することです。

例えば、クラスは、データベースのテーブルに対応するオブジェクト(クラスのインスタンス)は、データベースの行に対応し、フィールドは、データベースの列に対応します。

用語「オブジェクト/リレーショナルの不一致は、」リレーショナル・データベースの概念とその逆に、オブジェクト指向プログラミングのすべての概念を翻訳する明確な方法がないことを意味します。 Hibernateはこの問題を解決しようとします。

たとえば、継承をリレーショナルデータベースの概念にどのように変換しますか?リレーショナルデータベースには継承というものはありませんので、データベースでこれを表現するには何らかの方法を発明する必要があります。 Hibernateは、これを行うためのさまざまな方法を持っています。たとえば、クラス階層のための1つのテーブルを持って、行がどのサブクラスにマップするかを決定するための弁別子列を持つこと、またはサブクラスごとにテーブルを持つことです。

同様に、容易に指向プログラミングの概念をオブジェクトに変換することができないリレーショナルデータベース内に存在する概念が存在します。

+0

これは厳密には当てはまりません。テーブルとクラスは、あなたが暗示する方法で1:1をマッピングしません。オブジェクトの構成では、1つのオブジェクトで、1:mおよびm:nの関係を表現するために複数のテーブルの結合が必要な場合があります。関係は設定ベースです。オブジェクトはそうではありません。 – duffymo

-1

ORMソリューションは、それが可能なオブジェクト指向プログラマは、彼らがリレーショナルデータベースを使用していることを忘れて、オブジェクトにのみ対処するために作ってみます。

オブジェクト指向言語とSQLの違いから始めます。 OO言語は手続き型です。 SQLは宣言的です。

オブジェクトは、単一のソフトウェアコンポーネントに一緒状態と動作をカプセル化するクラスのインスタンスです。リレーショナルデータベースは、集合理論に従うエンティティ間の関係を表現する。

オブジェクトは継承と合成を使用できます。テーブルは一緒に結合できます。

私は、Hibernateの記事を読んでいないが、これらは私が考えることができる主な相違点の3になります。それらがあなたと共鳴する方法で書かれているかどうかを確認してください。

関連する問題