Java Hibernate?

2 Antworten

Hibernate adressiert die Unpassigkeit objektrelationer Impedanz (https://de.wikipedia.org/wiki/Object-relational_impedance_mismatch).

Hibernate verheiratet die objektorientierte Welt der Programmiersprache JAVA mit der Welt der relationalen Datenbanken (MySQL, PostgreSQL, Oracle, ...).

Das Problem ist, dass Relationalität und Objektorientierung Schnittpunkte haben, aber auch Dinge, die in dem einem oder dem anderen Konzept exklusiv auftauchen.

Hibernate ist ein Framework zur Datenbank-Abstraktion und für ORM (objektrelationales Mapping).

Punkt 1, Abstraktion:

Es gibt viele DBMS. (https://de.wikipedia.org/wiki/Datenbank#Datenbankmanagementsystem) Als Beispiele nenne ich mal MS SQL, MySQL, SQLite, Oracle usw. Alle DBMS funktionieren intern anders und haben oft ähnliche Funktionen, die aber anders umgesetzt wurden. Auch die SQL Schnittstellen der DBMS können teils stark variieren. Hibernate schafft eine Abstraktionsschicht zwischen DBMS und Java und bietet so eine Möglichkeit alle unterstützten DBMS über Hibernate über das selbe Interface/die selbe "Sprache" anzusprechen.

Punkt 2, ORM:

Objektrelationales Mapping heißt nichts anderes, als dass ein Java-Objekt auf eine SQL-Tabelle gemapped/darin umgewandelt wird. Typischerweise erhält jede Klasse eine eigene Tabelle und die Attribute der Objekte werden auf Tabellenspalten abgebildet. Das ist aber nur der simpelste Fall. Objektbeziehungen werden auf relationale Beziehungen umgebrochen, das ist schon etwas komplizerter.

einfaches Beispiel: Ein Objekt der Klasse Mensch mit der Eigenschaft Name wird auf Datenbankseite zu einer Tabelle mensch mit der Spalte name. Ein Mensch-Objekt kann dann ganz normal als Datenbankeintrag gespeichert werden.

Vorteil: Man muss sich im Java-Quellcode weniger mit SQL und Datenbankinterna beschäftigen. Auch das manuelle Herauslesen der Daten aus der DB und das Zuweisen dieser Daten an Objekte geschieht durch ORM automatisch

Nachteil: Ein ORM benutzen ist in einigen Fällen leichter bis starker Overhead, belastet also die Performance und Rechenpower. Gerade Massen - oder Batchaktionen sind in ORM oft langsamer als das direkte Absetzen der Befehle an die Datenbank.

Willst du wirklich beruflicher Java-Entwickler werden wirst du um Hibernate nicht herumkommen. Es wird oft und gern eingesetzt.

Woher ich das weiß:Berufserfahrung – Berufserfahrung