Sık Kullanılan Hibernate Annotations (Dipnotlar)

Eksik/Güncel Olmayan Bilgi Raporla

Hibernate orm aracından yararlanılarak geliştirilen projelerde veya farklı bir orm aracı kullanılarak jpa üzerinden geliştirme yapılan projelerde sıklıkla kullandığımız bazı dipnotlar,bu dipnotların kullanımı ve açıklaması aşağıda yer almaktadır.Orm araçlarını yeni kullanmaya başlayanlar için,kendim de yeni öğrenmeye başladığım ve öğrendiklerimi unutmamak,unuttuğumda ise açıp bakmak için bir Türkçe kaynak oluşturdum.

 

  • @NamedQuery

Named Query dipnotu projelerimizde sorgular yürütebilmemize olanak verir.Kullanımı ve daha detaylı bilgi için bu yazıma bakabilirsiniz.http://mesutpiskin.com/blog/jpa-namedquery-parametresiz-sorgular.html

  • @Column

Entity sınıflarında  tabloların daha önceden veritabanı yönetim sistemi ile hazırlanan kolonlarının ismini belirtmek,değiştirmek için kullanılır.Örneğim;aşağıda gördüğünüz gibi entity sınıfında bir değişkenimiz var bu değişken Siparis tablosundaki adetSparis kolonunu belirtmektedir.Fakat @Column yazdık ve SPARIS_ADETI dedik,uygulama çalıştığında veri tabanı üzerindeki tablonun adetSparis kolununun ismi SPARIS_ADETI olarak değişecektir.

  • @Id

Tablolarda bulunan birincil anahtar (primary key) diye nitelendirdiğimiz kolonu belirtmek için kullanılır.Örneğin;tablomuzda bir kolon  ve ismi idSparis olsun,sparisler tablosu için gelen sparişlerin numarası olarak nitelendirelim.Her sparişin 1 adet spariş numarası olur ve unique dediğim eşsiz bir veridir yani benzeri yoktur,bu yüzden bu kolonumuz birincil anahtır.Bunu belirtmek için entity sınıfımızda aşağıdaki gibi değişkenden önce veya get metodundan önce bunu belirtiriz.

 

  • @Table

Entity sınıfımız üzerinden haritalanan tablonun ismini belirtiğimiz dip nottur.Orm araçları buradaki etiketi alarak tablonun ismine vermektedir.Aşağıdaki gibi sınıftan haritalanacak olan tablonun isminin siparis olacağını belirttik.Mysql kullanıyorsanız büyük harfle yazsanız bile bunu küçük harfe,oracle ise küçük harfle yazsanız bile büyük harfe çevirecektir.

 

  • @Transien

Bu dipnotun kullanıldığı değişken veritabanında ise tabloya karşılık gelecek olan alanın sınıfta var olacağı fakat tablo üzerinde bir kolona karşılık gelmeyeceği yanı tablo üzerinde bir kolonun oluşturulmaması gerektiğini belirtir.Yani bu dip nota sahip alan orm araçları tarafından görmezden gelinir.

  • @Basic

Bu dipnotun kullanıldığı değişken veritabanında ise tabloya karşılık gelecek olan alanın mutlaka bulunması gerektiğini belirtmektedir.Kullanımı ise diğer dip notlara benzer şekildedir.

 

  • @Temporal

Bu dip not haritalanan kolunun bir tarih,saat tipinde olacağını yani zamana bağlı veri tiplerinde kullanırız.Farklı kullanım şekilleri vardır ve belirttiğiniz etiket ile sizin o değişkene atadığınız değeri belirttiğiniz formata çevirir.Örneği biz set metodu ile tarih ve saati verip,etiket olarak sadece tarih belirtirsek veritabanına veri tarih olarak kaydedilecektir.

 

  • @Lob

Large object olarak ifade edilir,yani büyük veri tipleri için kullanılır.Her veritabanı yönetim sisteminin farklı büyük veri tipleri vardır örneğin mysql longtext diye belirtirken oracle lob diyebilir işte Lob dipnotunu verdiğimizde orm araçları bunu veritabanına göre ayarlayarak o kolonu büyük veri olarak oluşturur.

 

  • @GeneratedValue

Tablolarda bulunan otomatik artan veya belirli kurallara göre veritabanı tarafından otomatik olarak verilen değerlere karşılık gelen dipnottur.Otomatik artan bir id değerimiz varsa bunu id değişkeninden önce bu dipnot ile belirtiriz.Kullanımı ise oldukça kolaydır,farklı parametreler alabilmektedir.

  • @TableGenerator

Otomatik artan değerlerde sistem tarafından oluşturulan id değerini tutmak için kullanılmaktadır.Bir sonraki oluşacak olan id değerini bir tablo oluşturarak saklayabilmektedir.Gerek ilişkisel tablolarda gerekse raporlama esnasında kullanılabilir.

 

  • @SecondaryTable

İlişkisel tablolar oluşturmak için kullanılır,bir entity(varlık) sınıfındaki verilerin birden fazla tablolarda tutulabilmesini sağlar.Örneğin bir sınıfımız var ve öğrenci bilgileri,notları,adresini,dersleri tutuyor fakat adres kolonunu biz farklı tabloda tutmak istiyoruz yani birden fazla adres olabileceğini düşünerek bir adres tablosu oluşturarak orada saklmak istiyoruz,bunun için SecondaryTable dipnotunu kullanıyoruz.

Oluşturulan diğer tablolarda ana tabloda bulunan id değeri de ilişki için diğer tablolara gönderilir.Yani ana tablodaki siparisid değeri olsa diğer tablolara da otomatik olarak bu id alanı eklenir ve değeri otomatik olarak verilir.

  • @Embedded – @Embeddable

Bir varlık (entity) sınıfı içerisinde haritalanacak olan alanların bir kısmını başka bir varlık sınıfı olmayan sınıftan almak istediğimizde kullanılır.Örneği bir varlık sınıfımız var ve personel bilgileri içeriyor bir adet ise normal sınıfımız var ve adres isminde adres alanları içeriyor,cadde,sokak,il,ilçe vs. bu sınıfı varlık sınıfı üzerindeymişcesine veritabanına haritalamak ve bu sınıf içerisinde kullanmak için oluşturulmuş bir diptnottur.Burada adres sınıfımızın üzerinde @Embeddable dipnotu gelir bunu kullanacağımız varlık sınıfında ise bu sınıf tanımlanarak başına @Embedded dipnotu gelir.

 

  • @AttributeOverrides
  • @AttributeOverride
  • @ElementCollection
  • @JoinTable
  • @JoinColumn
  • @GenericGenerator
  • @CollectionId
  • @ElementCollection EAGER ve LAZY
  • @OneToOne

Yorumlar

yorumlar





Comments

  1. By Emre

    Cevapla

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.


%d blogcu bunu beğendi: