Hibernate Custom ID Generator

Ich kann nicht genau sagen, ob die Dokumentation für eigene Hibernate Sequence (Primary Key) Generatoren für mich zu überladen, zu spärlich oder einfach nichtssagend war, jedenfalls war es im Endeffekt wesentlich einfacher was zum laufen zu bekommen, als das Beispiel vermuten lässt:

JAVA:
  1. package com.example.customid;
  2.  
  3. import java.io.Serializable;
  4. import java.util.Date;
  5. import java.util.Random;
  6.  
  7. import org.hibernate.HibernateException;
  8. import org.hibernate.engine.SessionImplementor;
  9. import org.hibernate.id.AbstractUUIDGenerator;
  10.  
  11. public class CustomGeneratorextends AbstractUUIDGenerator
  12. {
  13.     @Override
  14.     public Serializable generate(SessionImplementor arg0, Object arg1) throws HibernateException
  15.     {
  16.         // Generate some custom pseudo random stuff
  17.         return Long.toHexString(new Long(new Date().getTime() + new Random().nextInt(1000)));
  18.     }
  19. }

Der generierte Wert taugt natürlich rein gar nichts als echte unique ID, zeigt aber hoffentlich ein etwas übersichtlicheres Beispiel auf dem man aufbauen kann.

Eine Beispielklasse, die die Hibernate Annotations zur Konfiguration verwendet sieht dann so aus:

JAVA:
  1. package com.example.customid;
  2.  
  3. import javax.persistence.GeneratedValue;
  4. import javax.persistence.Id;
  5.  
  6. import org.hibernate.annotations.GenericGenerator;
  7.  
  8. public class Dummy
  9. {
  10.     private String id;
  11.  
  12.     /**
  13.      * @return the id
  14.      */
  15.     @Id @GeneratedValue(generator="test")
  16.     @GenericGenerator
  17.     (
  18.             name = "test",
  19.             strategy = "com.example.customid.CustomGenerator"
  20.     )
  21.     public String getId()
  22.     {
  23.         return id;
  24.     }
  25.  
  26.     /**
  27.      * @param id the id to set
  28.      */
  29.     public void setId(String id)
  30.     {
  31.         this.id = id;
  32.     }
  33. }

Aktualisiert am 25. July 2008

Keine Kommentare

Kommentare als RSS Trackback URL Kommentar schreiben

Einen Kommentar schreiben


 
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: