Infolation Önerileri: Eklem @Formula ile varlığın özelliklerini hesaplayın

Portakalkafa

Global Mod
Global Mod


  1. Infolation Önerileri: Eklem @Formula ile varlığın özelliklerini hesaplayın

Tipps Hibernate serisi, hazırda bekletme sorularını yaymak için hızlı ve basit çözümler sunuyor. Bu kez bir SQL işlevinin dönüş değerini bir varlığın özniteliğiyle eşleştirme meselesidir.

Sormak:


Varlıklarımın özelliklerinden birinin değeri bir SQL işlevi ile hesaplanır. Hibernate ile nasıl eşleyebilirim?

Çözüm:


Kış uykusuna yatmak @Formula-Notasyon, Hibernate'in veritabanından kapsamı okuduğunda açıkladığı bir SQL snippet'ini sağlamanıza izin verir. Bu nedenle SNPPET SQL'in dönüş değeri, yazılarak korunan bir varlık özelliğinde gösterilir. Veritabanı zaten büyük miktarda veri üzerinde çalışan karmaşık bir işlev sağlıyorsa bu avantajlı olabilir.

Aşağıdaki basitleştirilmiş örnek, @Formula-Bir yazarın yaşını hesaplamak için anotasyon. Alternatif olarak, bu örnekte bir Java yöntemi ile de yapılabilir:

@Entity
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column
private LocalDate dateOfBirth;

@Formula(value = “date_part(‘year’, age(dateOfBirth))”)
private int age;



public int getAge() {
return age;
}
}


Hibernate, veritabanından bir varlık yazarı alırsa, @Module-Nnipper SQL SQL Eğitim Kuponu tarafından tanımlandı:

05:35:15,762 DEBUG [org.hibernate.SQL] – select author0_.id as id1_0_, author0_.dateOfBirth as dateOfBi2_0_, author0_.firstName as firstNam3_0_, author0_.lastName as lastName4_0_, author0_.version as version5_0_, date_part(‘year’, age(author0_.dateOfBirth)) as formula0_ from Author author0_ where author0_.id=1
Özet


Ek açıklama @Formula, bir varlık özelliğindeki bir SQL snippet'inin sonucunu eşlemenin basit bir yolunu sunar. Ancak dikkate alınması gereken bazı dezavantajlar da vardır:

  • Hibernate, veritabanı tarafından yüklenen her yazar varlığı için SNPPET SQL'ini gerçekleştirir. Bu nedenle, bu ek açıklamayı yalnızca tüm uygulamalarda gereken özellikler için kullanmak önemlidir.
  • Ek açıklama @Formula, yerel bir Snapper SQL kullanır. Bu, uygulama veritabanının bu taşınabilirliğini etkileyebilir.
Hazırda Geri Gösterim İpuçları – Kitap


Basit ve karmaşık haritalama tanımları, kayıt, Java 8'in desteği, önbellekte depolama ve statik ve dinamik üretim gibi konularda bunların 70'ten fazla tarifi “İbernament Önerileri: Artı Ortak Karga Sorunlarına 70 Çözüm” kitabımda mevcuttur. Amazon'da cep ve e-kitap ve hibernate-tips.com'da PDF olarak mevcuttur.


()
 
Üst