@javax.persistence.TableGenerator

hibernate buch cover klein

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.

Get more information.

@javax.persistence.TableGenerator(

definiert einen Id Generator, der von der Annotation @GeneratedValue referenziert werden kann; Der Generator speichert den letzten Wert in einer Datebanktabelle.

name=�generatorName�,

Name des Generators, der in der Annotation @GeneratedValue verwendet werden kann

table=�databaseTable�,

Tabelle, in der der n�chste zu vergebene Wert der Id gespeichert wird

catalog=�databaseCatalog�,

Datenbankkatalog der Tabelle (wird nur von manchen Datenbanken unterst�tzt)

schema=�schemaName�,

Datenbankschema der Tabelle (wird nur von manchen Datenbanken unterst�tzt)

valueColumnName

Tabellenspalte, in der der n�chste zu vergebene Wert der Id gespeichert wird

pkColumnValue

Tabellenspalte, in der ein Schl�sselwert steht, der den n�chsten zu vergebene Wert identifiziert; Vorgabe: Name der Klasse

initialValue

legt den Startwert der Id fest, Vorgabewert: 1

allocationSize

Vorgabewert: 50, Der Generator erh�ht nicht für jeden neuen Datensatz den Wert der Id in der Tabelle, sondern erh�ht die Sequenz um die allocationSize und verteilt die Nummern. Erst wenn alle Nummern verteilt sind, wird die Sequenz wieder aufgerufen. Wenn man 50 Eintr�ge in die Datenbank schreibt spart man sich bei einer allocationSize von 50 daher 49 Mal das Erh�hen des Wertes. Das verbessert die Performance. Der Nachteil ist, dass die vergebenen Ids bei einem Neustart der Anwendung L�cken haben.

Generatoren sollten laut EJB 3 Spec global sein, aber Hibernate h�lt sich mindestens bis zur Version 3.2 nicht an diese Festlegung.

uniqueConstraints={@UniqueConstraint(columnNames={"col_A, col_B"})}

optional, erzeugt beim Erstellen der Tabelle einen Unique-Key-Constraint

)


@Id

@TableGenerator(name = "puma_gen", table="primary_keys")

@GeneratedValue(strategy = GenerationType.TABLE, generator = "puma_gen")

private Integer id;