4 tane mapping türümüz vardır.

  1. One-to-One
  2. One-to-Many
  3. Many-to-One
  4. Many-to-Many

Primary Key ve Foreign Key

Primary key bir satırın özel olmasını tanımlar.

Foreign Key : İki tabloyu birbirine bağlar ve bir tabloda bulunan alan diğer tablonun primary key'ine bağlanır.

Cascade : İlişkili entitiyler arasındaki aynı operasyonu yapmayı tanımlar. Mesela ben Teacher ve TeacherDetail arasında bir ilişki kurmak istersem; Şöyle ki Teacher'i veri tabanına eklerken TeacherDetail'de eklensin, yada Teacher'i silersem TeacherDetail'de silinsin gibi bu süreçlere CASCADİNG denir.

Fetch Types

Eager ve Lazy Loading

Ana soru şudur : Biz bir data aldığımızda, onunla ilgili bütün her şeyi de almak istiyor muyuz ?

Eager, bütün her şeyi alır.

Lazy, istek olduğunda getirir.

Default Fetch Types

  1. @OneToOne : FetchType.EAGER
  2. @OneToMany : FetchType.LAZY
  3. @ManyToOne : FetchType.EAGER
  4. @ManyToMany : FetchType.LAZY

Eğer ki lazy ile bir data yüklemeye çalıştığımızda sadece talep olursa oradan data yüklenir ve bu bizim içn açık bir Hibernate session istiyoruz. Eğer ki Hibernate session kapalı ise ve lazy data'yı almaya çalışırsak Hibernate bize exception fırlatır bunu da çözmek için JOIN FETCH kullanıyoruz (ders 31-32)