JPA'da bir Entity sınıfı mutlaka bir Id alanına sahip olmalı. Bu Id alanları için de GenerationType'lar kullanıyoruz. Bunlar Auto,Sequence,Identity ve Table. Bunlar arasındaki farklar nelerdir? Örneğin Identity için veri tabanında mutlaka bir belirleyici (eşsiz) bir alan tanımlanmış olmalı. Diğerleri için ne söylenebilir fark olarak?

soruldu: 22 Şub '15, 09:17

ilkay's gravatar image

ilkay
726333649
cevap kabul oranı: 13%


Kullanıp tecrübe ettiklerimi yazayım

GenerationType.AUTO:

EclipseLink ve Hibernate bu durumda Oracle veritabanı kullandığımızda 'kütüphane_isimi_sequence' isminde bir sequence oluşturur ve hiç başlangıç değeri vermezsek direk 1 ,51,101.. şeklinde sayı üretir.

GenerationType.TABLE :

Bu type'ta ise key value gibi calışır . bir tablo oluşturur verdiğimiz konfigürasyonlar doğrultusunda mesela aşşağıdaki ayarlara göre myTab isminde TableGenerator yazmalıyız. Ayarlarımızı açıklıyacak olursak ID_GENERATION isminde bir tablo oluşturulacak ve iki kolonu olucak ID_NAME ve ID_VALUE isminde sonrasında her entity için bir satır tutucak satırın key tarafı CUSTOMER_ID_VALUE , value tarafı ise sırayla artan sayı olucak bize otomatik üreticektir generator'ümüz.

       @Id
        @GeneratedValue(generator="myTab")
        @TableGenerator(name="myTab", table="ID_GENERATION",
            pkColumnName="ID_NAME", valueColumnName="ID_VALUE",
            pkColumnValue="CUSTOMER_ID_VALUE")

                  ID_GENERATION    
     ID_NAME                     ID_VALUE
   CUSTOMER_ID_VALUE        <bir sonraki değer>

tablo görüntüsü bu şekildedir.

GenerationType.SEQUENCE:

Bu GenerationType'ı hiç kullanmadım :)

permanent link

cevaplandı: 11 Mar '15, 05:21

Mehmet%20KILIC's gravatar image

Mehmet KILIC
51191422
cevap kabul oranı: 20%

değiştirildi: 11 Mar '15, 05:41

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×86
×4
×1

Soruldu: 22 Şub '15, 09:17

Görüntüleme: 639 kez

Son güncelleme: 11 Mar '15, 05:41

powered by BitNami OSQA