Wann ist Hibernate / JPA / Toplink zu verwenden?

7

Im Moment mache ich eine extrem einfache Website - etwa 5 Seiten. Die Frage ist, ob es Overkill ist und die Zeit wert ist, irgendeine Art von Datenbank-Mapping-Lösung zu integrieren, oder ob es besser wäre, einfach nur alten JNDI zu verwenden. Ich werde vielleicht ein Dutzend Dinge haben, die ich aus der Datenbank lesen / schreiben muss. Ich denke, ich habe ein grundlegendes Verständnis dieser Technologien, aber es würde immer noch viel auf die Dokumentation Bezug nehmen. Hat noch jemand die Entscheidung getroffen?

BEARBEITEN: Sorry, ich hätte JNDI angeben sollen, um die DB-Verbindung und JDBC nach den Operationen zu suchen.

    
GBa 23.09.2008, 17:46
quelle

6 Antworten

17

Kurze Antwort: Es hängt von der Komplexität ab, die Sie unterstützen möchten.

Lange Antwort:

Zuallererst sind ORM (objektrelationales Mapping - Datenbank-Mapping, wie Sie es nennen) und JNDI (Java Naming and Directory Interfaces) zwei verschiedene Dinge.

Der erste, wie Sie bereits wissen, wird verwendet, um die Datenbanktabellen Klassen und Objekten zuzuordnen. Die zweite Möglichkeit besteht darin, einen Nachschlage-Mechanismus für Ressourcen bereitzustellen, beispielsweise DataSources, Ejb, Queues oder andere.

Vielleicht Ihr "JDBC".

Nun zu Ihrer Frage: Wenn es so einfach ist, wäre es nicht notwendig, ein ORM zu implementieren. Die Zahlentabellen wären höchstens 5 - 10, und die Operationen sind wirklich einfach, denke ich.

Wahrscheinlich wäre das einfache JDBC ausreichend.

Wenn Sie das DAO-Muster verwenden, können Sie es später ändern, um die ORM-Strategie bei Bedarf zu unterstützen.

So: Angenommen, Sie haben die Employee-Tabelle

Sie erstellen die Employee.java mit allen Feldern der DB von Hand (es sollte nicht zu lange dauern) und eine EmployeeDaO.java mit Methoden wie:

%Vor%

Und die Implementierung ist ziemlich geradlinig:

%Vor%

Wenn (und falls) Ihre Anwendung zu komplex wird, können Sie die DAO-Implementierung ändern. Zum Beispiel ändern Sie in der "Select" -Methode den Code, um das ORM-Objekt zu verwenden, das die Operation ausführt.

%Vor%

Dies ist nur ein Beispiel, im wirklichen Leben können Sie die abstact factory das ORM DAO erstellen lassen, aber das ist offtopic. Der Punkt ist, dass Sie einfach anfangen können und indem Sie die Design-Muster verwenden, können Sie die Implementierung später bei Bedarf ändern.

Natürlich, wenn Sie die Technologie lernen wollen, können Sie mit nur einem Tisch beginnen.

Die Wahl des einen oder anderen (ORM-Lösung) hängt im Wesentlichen von der Technologie ab, die Sie verwenden. Zum Beispiel für JBoss oder andere Open Source-Produkte ist Hibernate großartig. Es ist Open Source, es gibt eine Menge Ressourcen, von denen man lernen kann. Aber wenn Sie etwas verwenden, das bereits über Toplink verfügt (wie der Oracle Application Server) oder wenn die Basis bereits auf Toplink aufgebaut ist, sollten Sie bei diesem Framework bleiben.

Übrigens, seit Oracle BEA gekauft hat, haben sie gesagt, dass sie Kodo (Weblogic Peresistence Framework) durch toplink im jetzt "Oracle Weblogic Application Server" ersetzen.

Ich überlasse Ihnen einige Ressourcen, wo Sie mehr Informationen dazu erhalten können:

In diesem Buch "Patterns of Enterprise Application Architecture" erklärt Martin Fowler, wo man den einen oder anderen verwendet, hier ist der Katalog. Werfen Sie einen Blick auf Architekturmuster von Datenquellen im Vergleich zu objektrelationalen Verhaltensmustern:

PEAA Katalog

DAO (Data Access Object) ist Teil des Kern-J2EE-Musterkatalogs:

Das DAO-Muster

Dies ist ein Einstiegs-Tutorial für Hibernate:

Ruhezustand

Die offizielle Seite von Toplink:

Toplink

Endlich denke ich, dass die gute Meinung von JPA ist, dass Sie in letzter Zeit den Anbieter wechseln können.

Beginne einfach und entwickle dich dann weiter.

Ich hoffe, das hilft.

    
OscarRyz 23.09.2008, 18:37
quelle
1

Es sieht so aus, als ob es für eine sehr einfache Anwendung übertrieben wäre, besonders wenn Sie nicht vorhaben, es jemals zu erweitern. Es scheint jedoch auch, dass es sich lohnen könnte, diese mit dieser einfachen Anwendung zu verwenden, damit Sie besser verstehen, wie sie arbeiten, wenn Sie das nächste Mal etwas haben, das sie verwenden könnte.

    
ColinD 23.09.2008 18:10
quelle
1

Meinst du ganz normale JDBC? Ein kleines Projekt kann eine gute Gelegenheit sein, eines der ORM-Frameworks zu übernehmen, besonders wenn Sie Zeit haben.

Ohne weitere Informationen ist es jedoch schwierig, eine Empfehlung auf die eine oder andere Art zu geben.

    
Hank 23.09.2008 18:14
quelle
1

Meine Faustregel ist, dass es schreibgeschützt ist. Ich bin bereit, dies in JDBC zu tun, obwohl ich lieber ein leeres Hibernate-Projekt mit SQLQuery verwenden möchte, um die Typzuordnung von Hibernate zu nutzen. Sobald ich schreiben muss, gehe ich mit Hibernate, weil es so viel einfacher ist, ein paar Attribute zu setzen und dann den Speicher aufzurufen, als jede Spalte einzeln zu setzen. Und wenn Sie mit der Optimierung beginnen müssen, um Updates für unveränderte Objekte zu vermeiden, sind Sie mit einem OR / M und dessen dreckiger Prüfung viel besser dran. Der Umgang mit Fremdschlüsselbeziehungen ist ein weiteres Zeichen, dass Sie es einmal zuordnen und dann die Getter verwenden müssen. Die gleiche Logik würde für Toplink gelten, obwohl Hibernate, wenn sie in den 3 Jahren, seit ich sie benutzt habe, etwas wie HQL hinzugefügt haben, viel besser für diese Art von Übergang von reinem SQL wäre. Denken Sie daran, dass Sie nicht jedes Objekt / jede Tabelle abbilden müssen, nur diejenigen, bei denen ein klarer Vorteil besteht. Meiner Erfahrung nach bauen die meisten Projekte, die kein existierendes OR / M verwenden, ein neues auf, was eine schlechte Idee ist.

    
Brian Deterling 23.09.2008 21:36
quelle
1

Der beste Weg, um ORM zu lernen, ist ein kleines Projekt. Beginne mit diesem Projekt.

Sobald Sie den Dreh raus haben, verwenden Sie ORM für alles.

Es gibt nichts zu klein für ORM. Nach den ersten paar Projekten werden Sie feststellen, dass Sie nicht anders arbeiten können. Das ORM-Mapping ist in der Regel sinnvoller als fast jede andere Art zu arbeiten.

    
S.Lott 24.09.2008 02:20
quelle
0

Sehen Sie sich die verschiedenen Toplink-Guides an, sie haben Intro, Beispiele, Szenarien usw.

Ссылка

    
Kalpesh Soni 22.11.2013 20:19
quelle

Tags und Links