Hibernate dynamic-insert, dynamic-update
Hibernate’in bir kullanılabilir özelliği daha; dynamic-insert, dynamic-update : )
dynamic-update : Güncelleme sql ifadesini(update sql) çalışma zamanında sadece değişen kolonlara göre dinamik olarak oluşturur.
dynamic-insert : Kayıt ekleme sql ifadesini(insert sql) çalışma zamanında sadece veri girilmiş kolonlara göre dinamik olarak oluşturur.
Şöyle ki;
@Entity @Table(name = "PERSONEL") @org.hibernate.annotations.Entity(dynamicInsert=true,dynamicUpdate=true) public class PERSONEL{ ... ... ... }
Sadece AD, SOYAD ve TC_KIMLIK_NO alanlarının girildiği bir kayıt işlemi sonrası
INSERT INTO PERSONEL(AD, SOYAD, PERSONEL_NO, TC_KIMLIK_NO, YAS, CINSIYET, DOGUM_TARIHI) VALUES (?, ?, ?, ?, ?, ?, ?)
gibi bir sql ifadesi oluşması yerine
INSERT INTO PERSONEL(AD, SOYAD, TC_KIMLIK_NO) VALUES (?, ?, ?)
gibi sadece veri girilmiş alanların dahil edildiği bir sql ifadesi oluşuyor.
Performans açısından ise şöyle bir ters orantı var. Normal koşullarda Hibernate her varlık sınıfı için üretilen ekleme , güncelleme, sorgulama sql ifadelerini belleğine alır. Böylece her ekleme, güncelleme, sorgulama işlemi için bir sql ifadesi oluşturması gerekmez. Bu performans açısından bir artı getirir. Amma lakin ki bu özellik aktif hale getirildiğinde de her ekleme, güncelleme işlemi için bir sql ifadesi oluşturma işi çıkıyor ortaya. Dolayısıyla çok fazla kolon içeren tablolar için çalıştırılacak sql ifadesini minumuma indirerek performans açısından bir artı getirebilse de diğer durumlar için karar vermek gerekiyor, bu özelliği aktif yapıp yapmamaya.
Son Yorumlar