4 tane mapping türümüz vardır.
- One-to-One
- One-to-Many
- Many-to-One
- 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
- @OneToOne : FetchType.EAGER
- @OneToMany : FetchType.LAZY
- @ManyToOne : FetchType.EAGER
- @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)