# Datenbankzugriff wie gestalten?



## Danloc (26. Jun 2018)

Hallo zusammen,

ich habe mein erstes "großes" Hobbyprojekt in Angriff genommen und habe zum Thema Datenbankanbindung ein paar Grundlegende Fragen und möchte wissen, was "best practice" ist.

Da ich Beruflich viel mit Datenbanken zu tun habe, allerdings in anderen Programmiersprachen entwickel und unsere Datenbank Objektorientiert ist, habe ich zwar relativ gute SQL kentnisse aber wenig Erfahrung mit MySQL.

Bei einer Objektorientierten Datenbank habe ich nämlich die Möglichkeit, eine Klassenstruktur anzulegen und eben "darin" auch die Daten zu speichern. Das bedeuted ebenfalls das ich mir von den Klassen Objekte erzeugen kann, die entsprechende Daten enthalten, mit denen ich dann arbeiten kann.

Nun Frage ich mich, wie ich das in Java umsetze, ohne dass ich diese Mittel zur Verfügung habe. Ich will mir ungern eine Klasse anlegen, die einfach alle Query's enthällt.

Gibt es hierfür einen bewehrten Weg? Ich meine ich habe mal etwas von einem DataObjectManager (korrigiert mich wenn es falsch ist) gelesen, bei dem für jede Datenbanktabelle eine entsprechende Klasse in Java angelegt wird, die wiederrum die Tabelle wiederspiegelt und mittels dieses Managers die Daten in Objecte dieser Klasse bringt. 

Ist es überhaupt sinnvoll, mittels Objecte die Daten für die Anwendungsschicht bereitzustellen bzw. zu verändern?

Ich hoffe es ist ungefähr klar geworden, was ich meine.
Danke schonmal im Vorraus.

Gruß Danloc


----------



## Thallius (26. Jun 2018)

Hybernate z.B. sollte genau das haben was du brauchst. Ich persönlich finde allerdings das OO Datenbanken nach wie vor viel zu oft auch da eignesetzt werden wo es gar nicht nötig ist und damit ein hoher Performanceverlust in kauf genommen wird.


----------



## Danloc (26. Jun 2018)

Hallo Thallius,
genau sowas habe ich gesucht. Ist es denn der gängige Weg bzw. Best-Practice ein Solches Framework zu benutzen und die Daten mittels ORM zu Verwalten bzw. sowas wie persistente Objekte zu haben? 

Es ist nicht so, dass ich unbedingt ein solches Framework benutzen will, ich will es einfach auf den "üblichen" Weg bzw. nach best-pratice gestalten. Ich denke diese Thematik gehört zum 1x1 eines Java Entwicklers und ich bin sicherlich nicht der Erste, der auf eine Datenbank mit mittlerer Komplexität zugreift. Ich will Daher nicht irgendetwas zusammenfummeln, sondern eure Erfahrung auswerten.

Ergeben sich explizite Vorteile oder Nachteile beim benutzen eines solchen Frameworks?


----------



## mrBrown (26. Jun 2018)

Thallius hat gesagt.:


> Hybernate z.B. sollte genau das haben was du brauchst. Ich persönlich finde allerdings das OO Datenbanken nach wie vor viel zu oft auch da eignesetzt werden wo es gar nicht nötig ist und damit ein hoher Performanceverlust in kauf genommen wird.


Du meinst Hibernate?
Hat mit OO-Datenbanken nicht viel zu tun, das ist nur für relational Datenbanken^^




Danloc hat gesagt.:


> Ist es denn der gängige Weg bzw. Best-Practice ein Solches Framework zu benutzen und die Daten mittels ORM zu Verwalten bzw. sowas wie persistente Objekte zu haben?


Ja, ORM ist einer der üblichen Wege. Mehr dürftest du unter "JPA" finden 



Danloc hat gesagt.:


> Ergeben sich explizite Vorteile oder Nachteile beim benutzen eines solchen Frameworks?


naja, es macht alles deutlich einfacher, aber dafür bindet man sich halt an die API und nimmt dabei u.U. Einschränkungen in Kauf, zB in manchen Fällen bei der Performance


----------



## Thallius (26. Jun 2018)

mrBrown hat gesagt.:


> Du meinst Hibernate?
> Hat mit OO-Datenbanken nicht viel zu tun, das ist nur für relational Datenbanken^^



Für mich ist das ein Wrapper welcher OO Klassen auf eine relationale Datenbank abbildet. Also erscheint das Ergebnis, welches man benutzt wie eine OO Datenbank auf wenn eine relationale drunter steckt.

Un in manchen Fällen finde ich stark untertrieben....


----------



## Danloc (26. Jun 2018)

Wenn ich es richtig verstanden habe ist JPA die Schnittstelle um das ORM Konzept mit Hilfe von Frameworks wie Hibernate zu benutzen, richtig?

Ich werde mich mal etwas einlesen und schauen welche Frameworks es neben Hipernate noch gibt.

Hat eventuell jemand Tutorials, Internetseiten usw. wo dieses Thema gut erklärt wird?
Ein paar konkrete Codebeispiele um sich das einmal anzusehen wären hilfreich.


----------



## mrBrown (26. Jun 2018)

Danloc hat gesagt.:


> Wenn ich es richtig verstanden habe ist JPA die Schnittstelle um das ORM Konzept mit Hilfe von Frameworks wie Hibernate zu benutzen, richtig?


Ja, JPA ist eine ORM-Standard, der von verschiedenen Frameworks implementiert wird.

https://www.tutorialspoint.com/de/jpa/jpa_introduction.htm


Unabhängig von JPA gibts noch andere ORM-Framewokrs, ersteres ist aber durch JavaEE ziemlich verbreitet.
Außerdem gibts natürlich "normales" JBDC und andere Libs, wie z.B. jOOQ


----------



## Danloc (27. Jun 2018)

Vielen Dank,

hab nochmal den gleichen Link im Original (Englisch) herausgesucht. Die deutsche Übersetzung scheint maschinell erfolgt zu sein, es ist nämlich größtenteils "Wortkotze" 

also falls es noch jemanden interessiert:
https://www.tutorialspoint.com/jpa/jpa_introduction.htm


----------

