Hazırda bekletme ipuçları: @Formula ek açıklamasıyla varlık özelliklerini hesaplayın

Portakalkafa

Global Mod
Global Mod


  1. Hazırda bekletme ipuçları: @Formula ek açıklamasıyla varlık özelliklerini hesaplayın

Hazırda Bekletme İpuçları serisi, yaygın Hazırda Bekletme sorularına hızlı ve kolay çözümler sunar. Bu kez, bir SQL işlevinin dönüş değerini bir varlığın özniteliğine eşlemekle ilgili.


Rica etmek:


Varlık niteliklerimden birinin değeri, bir SQL işlevi tarafından hesaplanır. Bunu Hazırda Bekletme ile nasıl eşleyebilirim?

Çözüm:


hazırda bekletme moduna geçer @formül-Açıklama, varlığı veritabanından okurken Hibernate’in yürüteceği bir SQL snippet’i sağlamanıza olanak tanır. SQL parçasının dönüş değeri daha sonra salt okunur bir varlık özniteliğine eşlenir. Veritabanı zaten büyük miktarda veri üzerinde çalışan karmaşık bir işlev sağlıyorsa bu yararlı olabilir.

Aşağıdaki basitleştirilmiş örnek, @formül– Bir yazarın yaşını hesaplamak için açıklama. Alternatif olarak, bu elbette bu örnekte bir Java yöntemi kullanılarak da 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;
}
}


Hazırda Bekletme, veritabanından bir Yazar varlığı aldığında, onu uzantıyla ekler @Modül– SQL deyimine tanımlı SQL parçaları eklemek için ek açıklama:


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


@Formula ek açıklaması, bir SQL parçacığının sonucunu bir varlık özniteliğiyle eşleştirmek için kolay bir yol sağlar. Ancak, bilinmesi gereken bazı dezavantajları da vardır:

  • Hibernate, veritabanından yüklediği her yazar varlığı için SQL snippet’ini çalıştırır. Bu nedenle, bu ek açıklamayı yalnızca tüm kullanım durumlarında ihtiyaç duyulan nitelikler için kullanmak önemlidir.
  • @Formula ek açıklaması, yerel bir SQL snippet’i kullanır. Bu, uygulama veritabanının taşınabilirliğini etkileyebilir.
Hazırda Bekletme İpuçları: Kitap


“Hibernate Tips: 70+ Solutions to Common Hibernate Problems” adlı kitabım, basit ve karmaşık eşleme tanımları, günlüğe kaydetme, Java 8 desteği, önbelleğe alma ve statik sorgular ve dinamikler oluşturma gibi konularda 70’den fazla tarif içeriyor. Amazon’da basılı ve e-kitap biçiminde ve hibernate-tips.com adresinde PDF biçiminde mevcuttur.


()



Haberin Sonu
 
Üst