About Java and JRuby Development
JEE, Spring, Guice
Hibernate, Java Persistence (JPA)
and various Web Frameworks

@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;