2009-02-09 14 views
33

Ich versuche nur, den Frühling zu verstehen und herauszufinden, wie ich eine Oracle-Verbindung in der XML-Konfigurationsdatei verdrahte, und jetzt finde ich heraus, dass ich noch ein weiteres Framework brauche! - Hibernate, das ist sooo frustrierend, weil es sich anfühlt, als würde ich tiefer und tiefer in immer mehr Frameworks vorstoßen, ohne wirklich zu bekommen, was ich getan habe!Spring vs Hibernate

Ich schaute auf Hibernate und es scheint zu Spring ähnliche Dinge zu tun, bedenkt, dass ich nur einige SQL-Einfügungen in Oracle tun möchte.

Ich bin widerwillig und habe keine Zeit, um 2 Frameworks zu lernen - könnte ich es schaffen, Hibernate einfach für die einfachen Dinge zu übernehmen, die ich tun muss?

+0

Ich fühle deinen Schmerz, aber Frühling und Hibernate scheinen ziemlich verschiedene Dinge zu tun. Ich stelle fest, dass diese für bestimmte Aufgaben ziemlich voneinander abhängig sind. –

+0

Ich widerrufe die vorherige Aussage, offenbar tut Frühling auch Orm. –

+1

"Ich * möchte * nur einige SQL-Einfügungen in Oracle machen." Berühmte letzte Worte. –

Antwort

56

... könnte ich mit der Einführung von Hibernate für die einfachen Dinge, die ich tun muss, davonkommen?

Ja

Hibernate ist für ORM (relationales Mapping-Objekt), ist, Ihre Objekte persistent zu einem RDBMS machen.

Der Frühling geht weiter. Es kann unter anderem auch als AOP, Dependency Injector, eine Web Application und ORM verwendet werden.

Wenn Sie also nur ORM benötigen, verwenden Sie einfach Hibernate. Die Zeit wird kommen, wenn du Frühling brauchst, und du wirst es dann lernen.

Hier ist eine architektonische Ansicht des Frühlings:

spring

Und das ist Hibernate:

hibernate

9

Spring und Hibernate völlig andere Rahmenbedingungen für die verschiedenen Probleme. Spring ist ein riesiger Rahmen mit vielen Funktionen, Hibernate ist eine O/R-Brücke.

Ich würde empfehlen, in Ihrem Fall einfach alte JDBC zu verwenden ('nur einige SQL-Einfügungen in Oracle').

+0

Frühling hat ORM auch. – OscarRyz

+3

Ja, das einzige, was Spring nicht hat, ist eine eigene VM, die wahrscheinlich bald hinzugefügt wird, oder? ;) –

+0

Das Komische ist, dass Spring leicht ist, obwohl es so ein großes Framework ist. Scheinbar ist Leichtgewicht relativ - im Fall von Spring leichter als ein voller Java EE-Anwendungsserver. –

4

Spring und Hibernate sind wirklich dazu gedacht, zwei verschiedene Dinge zu tun. Spring ist in erster Linie ein Inversion-of-Control-Container- und Konfigurations-Subsystem, während Hibernate ein Datenbankbindungs- und Lazy Loading-Modul ist. Wenn Sie nicht eine Menge neuer Sachen in Ihren Code einführen möchten, bleiben Sie bei Spring und rollen Sie Ihre eigenen Abfragen oder verwenden Sie iBatis, um eine viel einfachere Datenbankbindung durchzuführen.

+2

Verwechsle ihn nicht mit iBatis, IMHO. Es ist in der Tat ein guter Rahmen, aber noch ein anderer für ihn. Kein Negativ sicher. –

7

Sie könnten nur mit Feder und spring-JDBC integration verwenden. Abhängig von der Komplexität Ihrer Datenzugriffsanforderungen kann dies mehr als ausreichend sein. Der Frühling Object-relation mapping ist auch einen Blick wert, wenn Sie eine Menge Datenzugriff tun werden.

Das Schöne am Frühling ist, dass es ein sehr locker gekoppelter Rahmen ist. Sie können also die verwendeten Bits nachlesen und den Rest vergessen - sogar während der Laufzeit.

1

Wenn alles, was Sie wollen, ist sql für Oracle einfügen Ich würde zu einer einfachen JDBC-Bibliothek bleiben. Alles, was Sie brauchen, ist eine Verbindung und vielleicht ein ConnectionPool (vielleicht c3po). Hibernate und dergleichen sind zu groß/zu kompliziert und IMO minderwertig. Hibernate integriert JDBC unter der Haube, aber in jeder messbaren Weise ist unterlegen - schwieriger zu verwenden, nicht schneller, und die Abfragen, die Sie schreiben müssen oder nicht einfacher.Es ist auch ein Beweis für ihre Unterlegenheit, da HQL auch eine Umleitungsroute bietet, so dass Sie JDBC-Abfragen direkt eingeben können. Sie stellen dies zur Verfügung (ich vermute), weil sie für jede komplexe Abfrage in HQL einfach nicht gut konstruiert werden können.