API Doktor bu konuda çok net.
Tüm oluşturucular org.hibernate.id.IdentifierGenerator arayüzünü uygular. Bu çok basit bir arayüz. Bazı uygulamalar kendi özel uygulamalarını sağlamayı seçebilir, ancak Hibernate bir dizi yerleşik uygulama sağlar. Yerleşik oluşturucular için kısayol adları aşağıdaki gibidir:
artış
yalnızca başka hiçbir işlem aynı tabloya veri eklemediğinde benzersiz olan long, short veya int türünde tanımlayıcılar üretir. Bir kümede kullanmayın.
Kimlik
DB2, MySQL, MS SQL Server, Sybase ve HypersonicSQL'de kimlik sütunlarını destekler. Döndürülen tanımlayıcı long, short veya int türündedir.
sıra
DB2, PostgreSQL, Oracle, SAP DB, McKoi'de bir dizi veya Interbase'de bir oluşturucu kullanır. Döndürülen tanımlayıcı uzun, kısa veya int türündedir
Hilo
hi değerlerinin kaynağı olarak bir tablo ve sütun (varsayılan olarak sırasıyla hibernate_unique_key ve next_hi) verildiğinde long, short veya int türünde tanımlayıcıları verimli bir şekilde üretmek için bir hi / lo algoritması kullanır. Hi / lo algoritması, yalnızca belirli bir veritabanı için benzersiz olan tanımlayıcılar üretir.
Seqhilo
Uzun, kısa veya int türünde tanımlayıcıları verimli bir şekilde oluşturmak için, adlandırılmış bir veritabanı dizisi verildiğinde bir hi / lo algoritması kullanır.
uuid
bir ağ içinde benzersiz olan dizge türü tanımlayıcıları oluşturmak için 128 bit UUID algoritması kullanır (IP adresi kullanılır). UUID, uzunluk olarak 32 onaltılık basamaktan oluşan bir dize olarak kodlanmıştır.
rehberlik
MS SQL Server ve MySQL üzerinde veritabanı tarafından üretilen bir GUID dizesi kullanır.
yerli
temel alınan veritabanının yeteneklerine bağlı olarak kimlik, sıra veya hilo seçer.
atanmış
save () çağrılmadan önce uygulamanın nesneye bir tanımlayıcı atamasına izin verir. Hiçbir öğe belirtilmezse bu varsayılan stratejidir.
seç
Bir veritabanı tetikleyicisi tarafından atanan birincil anahtarı, sırayı benzersiz bir anahtarla seçerek ve birincil anahtar değerini alarak alır.
Dış
başka bir ilişkili nesnenin tanımlayıcısını kullanır. Genellikle bir birincil anahtar ilişkisi ile birlikte kullanılır.
sıra kimliği
gerçek değer üretimi için bir veritabanı dizisi kullanan, ancak bunu, üretilen tanımlayıcı değerini insert deyimi yürütmesinin bir parçası olarak döndürmek için JDBC3 getGeneratedKeys ile birleştiren özel bir dizi oluşturma stratejisi. Bu strateji yalnızca JDK 1.4 için hedeflenen Oracle 10g sürücülerinde desteklenir. Oracle sürücülerindeki bir hata nedeniyle bu insert ifadeleriyle ilgili yorumlar devre dışı bırakıldı.
Çok fazla eşzamanlı kullanıcı olmayan basit bir uygulama oluşturuyorsanız, artırma, kimlik, hilo vb.
Veritabanınıza bağlı olarak sıra veya rehber seçmelisiniz . Bunlar güvenli ve daha iyidir çünkü id
nesil veri tabanının içinde gerçekleşecektir.
Güncelleme:
Son zamanlarda, ilkel tipin (int) bunun yerine warapper türü (Tamsayı) kullanılarak düzeltildiği idendity ile ilgili bir sorun yaşadık.