2016-07-11 7 views
-1

Ich bin ein Neuling in Java und las über Object Relational Mapping. Ich habe einen Begriff Object/Relational Mismatch auf dieser Verbindung HibernateWas ist Object/Relational Mismatch

gefunden Kann jemand erklären, was ist Object/Relational Mismatch in Bezug auf Java. Ich lese darüber auch von haacked.com aber konnte es nicht richtig bekommen.Erklärungen mit Beispiel wäre spürbar.

+0

Mögliche Duplikate von [Was ist ein Object-Relational Mapping Framework?] (Http://StackOverflow.com/Questions/1152299/what-is-an-object-relational-mapping-framework) –

+0

Nein, es ist kein Duplikat Wie in dieser Frage hat niemand über Object Relational Mismatch diskutiert. Ich habe Objekt-Relationales Mapping von dort selbst gelesen, aber ich hatte Verwirrung in objektrelationaler Nichtübereinstimmung, über die niemand dort diskutiert hat. –

Antwort

3

Hibernate ist ein ORM-Tool (Object Relational Mapping). Hauptzweck ist die Übersetzung von Konzepten aus der objektorientierten Programmierung, z. B. Klassen, Vererbung und Felder, in Konzepte, die in relationalen Datenbanken wie Tabellen, Zeilen und Spalten verwendet werden.

Zum Beispiel entspricht eine Klasse einer Datenbanktabelle, ein Objekt (Instanz einer Klasse) entspricht einer Datenbankzeile und ein Feld entspricht einer Datenbankspalte.

Der Begriff "object/relational mismatch" bezieht sich auf die Tatsache, dass es keine klare Möglichkeit gibt, alle Konzepte von der objektorientierten Programmierung auf relationale Datenbankkonzepte und umgekehrt zu übertragen. Hibernate versucht, dieses Problem zu lösen.

Zum Beispiel, wie übersetzt man Vererbung in relationale Datenbankkonzepte? Es gibt keine Vererbung in einer relationalen Datenbank, daher muss ein Weg gefunden werden, um dies in der Datenbank darzustellen. Hibernate hat verschiedene Möglichkeiten, zum Beispiel eine Tabelle für die Klassenhierarchie mit einer Diskriminatorspalte zu haben, um zu bestimmen, zu welcher Unterklasse eine Zeile gehört, oder eine Tabelle pro Unterklasse zu haben.

Ebenso gibt es Konzepte in einer relationalen Datenbank, die nicht leicht in objektorientierte Programmierkonzepte übersetzt werden können.

+0

Dies ist nicht streng zutreffend. Tabellen und Klassen werden 1: 1 nicht so zugeordnet, wie Sie es meinen. Die Objektkomposition besagt, dass ein einzelnes Objekt JOINs mehrerer Tabellen erfordern kann, um 1: m- und m: n-Beziehungen auszudrücken. Beziehungen sind festgelegt; Objekte sind nicht. – duffymo

-1

ORM-Lösungen versuchen es objektorientierten Programmierern zu ermöglichen, zu vergessen, dass sie relationale Datenbanken verwenden und nur in Objekten arbeiten.

Beginnen Sie mit dem Unterschied zwischen objektorientierten Sprachen und SQL. OO-Sprachen sind prozedural; SQL ist deklarativ.

Objekte sind Instanzen von Klassen, die den Zustand und das Verhalten in einer einzigen Softwarekomponente kapseln. Relationale Datenbanken drücken Beziehungen zwischen Entitäten aus, die der Mengenlehre folgen.

Objekte können Vererbung und Zusammensetzung verwenden. Tabellen können miteinander verbunden werden.

Ich habe den Hibernate-Artikel nicht gelesen, aber das wären drei der wichtigsten Unterschiede, die ich mir vorstellen kann. Sehen Sie, ob diese auf eine Weise geschrieben sind, die mit Ihnen in Resonanz ist.