Some time ago I posted a helper-class to transform HQL to SQL for debugging purposes. Meanwhile I found out how also to transform Criterias to SQL.
»more…
|
|
# |
For debugging purposes using hibernate it’s often usefull to have the generated SQL query to an appropriate HQL query.
But setting the hibernate configuration hibernate.show_sql to true leads to logging any query made within an application (which can be a lot in some applications). With the following class the hibernate API is used to generate the correct SQL query from a given HQL query and can be used anywhere to log the generated query.
»more…
Häufig genutzt, einmal notiert: Interface und abstrakte Implementierung von DAOs zur Benutzung mit Spring und Hibernate.
»more…
Internationalisierung wird sicherlich ganz einfach mit Unicode und UTF, dachte ich mir, zumal mySQL ab Version 4.1 Unicode unterstützt. Und versank in einem Haufen von undokumentierten Bugs, bis ich die dicke Keule auspackte.
»more…
Ein Problem mit Hibernate: Möchte man heraus finden, welche Anfragen warum besonders langsam sind, hat man keine Möglichkeit im Kode direkt auf die generierte SQL-Abfrage zu zugreifen. Die einzige Möglichkeit: Jede Menge Logging.
»more…
Hibernate erlebt einen recht großen Hype und ist auch in aller Munde. Aber was ist so besonders an Hibernate?
Ich habe mal eine Reflektion dessen gemacht und denke folgendes dazu:
Ein Punkt ist, dass man Hibernate einfach über XML konfigurieren kann. Meiner Meinung nach ist dies Trivial. Jeder Java Anfänger kann seine Konfigurationen in XML auslagern.
Ein weiterer Punkt ist die flexible Austauschbarkeit einer speziellen Datenbank. Sicherlich ein wichtiger Punkt, aber selbst dass ist meiner Meinung nach nicht das besondere. Schließlich könnte man das durch eine Absraktionsschicht auf JDBC realisieren.
Der wichtigste Punkt ist meiner Meinung nach das Arbeiten mit POJOs. Ich habe schon mit Frameworks gearbeitet, die Persistenzen bieten, aber nur zum Preis einer Erbhierarchie. Man mußte EJB 2 like alle seine Objekte von einer Basisklasse erben. Very ugly.
In Hibernate kümmert das nicht. Ich schreibe mein Programm, als gäbe es kein Hibernate. Hibernate erstellt Proxyklassen, die alles kapseln, macht Kodeinjektion und sorgt dafür, dass alles in Ordnung ist.
DAS sind die Frameworks der Zukunft.
Update: Im übrigen ist Hibernate damit sehr Pattern-Konform, da das Proxy-Pattern Bestandteil der GoF Muster ist. Hingegen ist eine EJB2-artige Erbhierarchie ein Antipattern.
Entsprechend denke ich, dass es nicht sonderlich viel Sinn macht, in einem (dem) alten Framework, wo strenge Erbhierarchien vorgegeben sind, bei der man von einer Basisklasse erben muss, auf Hibernate umzuschwenken. Die Zeit kann man sich sparen oder das ganze Framework auf Hibernate und Spring aufbauend neu schreiben. Wäre sicherlich effektiver.
Und schon die nächste Erfahrung: Enumerations sind eine feine Sache, auch wenn man diese in Java 1.4 noch per Hand machen muss.
Hibernate unterstützt Enumerations, so dass man seine Enumeration auch schön konsisten in der Datenbank ablegen kann.
Doch so einfach, wie es auf den ersten Blick erscheint, ist das ganze nicht, zumindest, wenn man es wiederverwertbar lösen möchte.
»more…




