2013-06-17 13 views
8

Momentan wechsle ich meine Java-Webanwendung von JDBC zu Hibernate, in meiner aktuellen Implementierung mit JDBC lade ich statische Daten bei der Initialisierung der Anwendung in statische Variablen, so dass ich nicht jedes Mal direkt auf die Datenbank zugreifen muss Statische Daten, die jetzt in den Ruhezustand wechseln Ich denke daran, diese statischen Variablen loszuwerden, so lange ich recherchiert habe Hibernate hält geladene Daten in einem Cache.Hibernate- und JDBC-Leistung?

Ich bin ziemlich neu im Winterschlaf, also bin ich mir nicht sicher, ob der Wechsel von meiner derzeitigen Methode in den Ruhezustand zu Leistungsverbesserungen führt. Ich werde weiter in Caching im Hibernate-Bereich forschen und einige Performancetests durchführen, um zu sehen, welche Methode besser ist, aber ich würde gerne einige Meinungen darüber haben, was andere über die Leistung dieser beiden Methoden denken.

Danke.

+2

Meinung sind [off-topic] (http://stackoverflow.com/help/on-topic) für diese Seite. –

+1

Was ist der Grund für den Wechsel von JDBC zu Hibernate? In Bezug auf die Leistung sollte gut geschriebene JDBC (mit Caching) jedes Mal Hibernate schlagen. Was die Wartbarkeit betrifft, wäre die Antwort ... es hängt davon ab, welche Art von Abfragen/Datenbankänderungen Sie benötigen ... – beny23

+0

Wenn Sie hauptsächlich an den Caching-Funktionen interessiert sind, dann sollten Sie sich für ehcache anstelle von Hibernate entscheiden. Durchschnittlich beanspruchen Winterschlafautoren einen Overhead von 10%. –

Antwort

8

JDBC bietet für die meisten Datenbankanbieter immer eine bessere Leistung als Hibernate. Sie können den Vergleich überprüfen, wie im unten stehenden Link angegeben. Er kommt zu dem Schluss, dass Hibernate schnell ist, wenn Tabellen mit weniger Zeilen abgefragt werden, sonst ist jdbc viel besser.

http://phpdao.com/hibernate_vs_jdbc/

Die Wahl von Hibernate über Abfragen jdbc und SQL ist nicht wegen der Leistung, sondern aus Gründen, vor allem Ausdauer und Datenbankunabhängigkeit Objekt in Bezug auf die nicht-Datenbank spezifische Abfragen zu schreiben. Sie können pdf-Führer lesen, um eine bessere Ansicht zu erhalten.

http://www.mindfiresolutions.com/mindfire/Java_Hibernate_JDBC.pdf

0

Für Ihre spezielle Situation würde ich empfehlen, Ihr eigenes Objekt zu erstellen, das benötigte statische Werte behalten würde. Sie können es während der Initialisierung Ihrer Anwendung oder wenn diese Daten zum ersten Mal angefordert werden.

Wie bei der vergleichenden Leistung ist es am besten, wenn Ihre Hibernate-basierte Datenzugriffsebene genauso gut ist wie JDBC oder die Leistungsbeeinträchtigung sich nicht auf die allgemeine Benutzererfahrung auswirkt. Hibernate wird verwendet, um die Entwicklung zu beschleunigen und die Wartbarkeit zu verbessern, und nicht um einen Leistungsvorteil gegenüber JDBC zu erzielen.