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.
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:
DAO (Data Access Object) ist Teil des Kern-J2EE-Musterkatalogs:
Dies ist ein Einstiegs-Tutorial für Hibernate:
Die offizielle Seite von 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.
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.
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.
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.
Sehen Sie sich die verschiedenen Toplink-Guides an, sie haben Intro, Beispiele, Szenarien usw.