@org.hibernate.annotations.Entity
Extract of the annotation reference in the Hibernate Developer Guide by example
Extensive, easy-to-follow introduction to Hibernate 3 including complete working examples. Integration of Hibernate with other technologies like Spring, EJB3, Struts and JavaServer Faces (MyFaces) is explained.
It is available as PDF in English language.
A German paper book was published by the Galileo Verlag.
@org.hibernate.annotations.Entity( |
ist eine Erweiterung zur Annotation @javax.persistence.Entity und kann nur zus�tzlich verwendet werden; Sie erlaubt detailliert Hibernate spezifische Parameter für das Entity festzulegen. |
mutable = true, |
Wenn das Entity nur gelesen aber nicht ge�ndert werden kann, sollte man mutable den Wert false zuweisen. |
dynamicInsert = true, |
Update-Queries für Klassen werden gew�hnlich bei der Initialisierung erzeugt und aktualisieren alle Spalten der Datenbank, auch wenn sich nur ein Feld �ndert. Das ist nur in genau einer Situation ein Problem: Wenn Sie in einer Tabelle Spalten mit kurzen Werten und Spalten mit Blobs/Clobs mischen und h�ufig die kurzen Spalten �ndern, w�rde der Update Befehl unn�tiger Weise die Blob/Clob Spalten beinhalten und die Geschwindigkeit verschlechtern. L�sung a: Teilen Sie Ihre Tabelle auf. L�sung b: Verwenden Sie dynamic-update Wenn Sie dynamic-update verwenden, erzeugt Hibernate dynamisch eine Update-Query, die nur die Spalten enth�lt, welche sich auch ge�ndert haben. Es ist wichtig zu wissen, dass die Erzeugung der Query Zeit kostet, da keine existierende Query wiederverwendet werden kann. Verwenden Sie das also nicht bei �normalen� Tabellen. Weitere Hinweise finden Sie in Kapitel 17.3Dynamic-update, dynamic insert. |
dynamicUpdate = true, |
Das Prinzip ist das gleiche, wie bei dynamic-update. Der Unterschied ist, dass nur Spaltennamen in der Insert-Query verwendet werden, die nicht leer sind. |
selectBeforeUpdate = false, |
Diese Einstellung wird die Performance deutlich verschlechtern und sollte daher vermieden werden. Wenn select-before-update verwendet wird, pr�ft Hibernate vor jedem Update mit einer Abfrage, ob sich die Daten ver�ndert haben. Ein sinnvolles Szenario w�re: Man m�chte vermeiden, dass durch ein unn�tiges Update ein Trigger auf der Datenbank aufgerufen wird. |
polymorphism = PolymorphismType.IMPLICIT, |
Diese Einstellung legt fest, wie sich Hibernate bei Vererbungshierarchien verh�lt. Beispiel: class Blume extends Pflanze. Die Query hei�t �select from Pflanze� Implicit bedeutet, dass diese Abfrage, je nachdem, ob ein Datenbankeintrag eine Blume oder nur eine Pflanze ist, eine Instanz der jeweiligen Klasse zur�ckgibt. Explicit w�rde bei dieser Abfrage, wenn es eine Instanz der Klasse Blume findet, eine Klasse Pflanze zur�ckgeben und die zus�tzlichen Felder von Blume einfach ignorieren. |
persister = "customPersister", |
Diese Einstellung muss �u�erst selten ge�ndert werden. Ein Persister ist verantwortlich für das Schreiben der Daten. Man k�nnte zum Beispiel einen Persister erstellen, der Daten in LDAP speichert. Im Hibernate Download finden Sie ein Beispiel im test Verzeichnis. Suchen Sie nach der Klasse org.hibernate.test.legacy.CustomPersister. |
optimisticLock = OptimisticLockType.VERSION |
Legt die Strategie für optimistic locking fest. Ich empfehle die Einstellung nur, wenn es wirklich notwendig ist, zu �ndern. Eine �nderung bringt eine deutliche Performance Einbu�e. ALL liest die Daten aus der Datenbank und pr�ft alle Spalten, ob sich diese ge�ndert haben. DIRTY liest auch die Daten aus, validiert aber nur Spalten, die sich ge�ndert haben. Damit kann man konkurrierende Updates auf dem gleichen Datensatz durchf�hren, ohne dass es zu einer Ausnahme kommt. Mehr Informationen zu Optimistic-Locking gibt es im Kapitel 8.5.1. |
) |
|
@Entity @org.hibernate.annotations.Entity(mutable
= true, dynamicInsert = true, public class Tiger implements Serializable { |