İçeriğe geç

Hibernate – @ManyToOne

@ManyToOne anotasyonu entity içinde entity kullanılıyor ve aralarında da çoka bir ilişki var ise kullanılır.

En sık kullanılan ilişki tipidir.

Şehir ve Ulke diye iki nesnemizin olduğunu düşünelim. bir ülkenin birden fazla şehri olur fakat bir şehrin birden fazla ülkesi olmaz.

Sehir tablosu içinde Ulke tablosuna join yapacağız. Aralarındaki ilişki çoka bir olduğuna göre, bu tabloların entitylerini yazarken, ManyToOne anotasyonu kullanılmalıdır.


4 farklı özellik sunar.

  • fetch,
  • cascade
  • optional
  • target entity

fetch ile sorgu çekildiğinde join yapılan kolonun da tamanınım getirilip getirilmemesi belirlenir. Default olarak eager gelir. Sürekli birlikte kullanılacak tablolar olmadığı sürece fetchtype lazy yapılmalıdır. –

cascade ile cascade tipini belirtiriz. 6 farklı cascade tipi vardır.

Bu tipler;

  • detach
  • merge
  • persist
  • reflesh
  • remove
  • all


CascadeType.REMOVE seçersek, bu nesne silindiğinde diğer nesne de silinir ya da CascadeType .MERGE seçersek merge edildiğinde diğer nesne de merge edilir. Tüm işlemlerin diğer nesnede de yapılması istenirse CascadeType.ALL seçilir ve silinirse silinir, kaydedilirse kaydedilir.

optional ile aradaki ilişki zorunlu mu değil mi bu belirlenir. Default true dur. Yani istenirse boş geçilebilir fakat false yaparsak arada bir ilişki kurulması yani bu alanın dolduurulması şart olur.

targetEntity : İlgili joine ilişkin referans sınıfın belirtilmesine yarar. Normalde gerekmez çünkü referans sınıf zaten alanın tipinden, get metotdundan ya da collections ların generic tipinden alınabilir. Fakat bazı durumlarda bunların hiçbirine ulaşılamaz Bu durumda target entity kullanılarak sınıf belirtilebilir.

Tarih:Hibernate

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir