Bugün sizlere aralarında many-to-many ilişkisi bulunan öğrencilerin ve onların almış olduğu derslerin bilgisinin tutulduğu iki tablo kullanarak örnek bir proje oluşturacağım.
Öncelikle veritabanı aracımızda 'Ogrenciler' ve 'Dersler' adında iki tablo oluşturacağız. Ben veritabanı aracı olarak MySQL kullandığımı daha önceden belirtmiştim. Kendi MySQL WorkBench'imde 'Ogrenciler' ve 'Dersler' adında iki tablo oluşturdum.
CREATE TABLE `uyeler`.`ogrenciler` (
`OgrenciId` INT NOT
NULL AUTO_INCREMENT,
`OgrenciAdSoyad`
VARCHAR(45) NULL,
PRIMARY KEY (`OgrenciId`));
CREATE TABLE `uyeler`.`dersler` (
`DersId` INT NOT
NULL AUTO_INCREMENT,
`DersAdi`
VARCHAR(45) NULL,
PRIMARY KEY (`DersId`));
Yukarıdaki tabloları oluşturduktan sonra tablolar arasındaki ilişkinin many-to-many olmasından dolayı üçüncü bir ilişki tablosu oluşturmamız gerekiyor. 'Kayit' adında yeni bir ilişki tablosu oluşturacağız.
CREATE TABLE `uyeler`.`kayit` (
`DersId` INT NOT
NULL,
`OgrenciId` INT NOT
NULL,
PRIMARY KEY
(`DersId`, `OgrenciId`),
CONSTRAINT `DersId`
FOREIGN KEY
(DersId)
REFERENCES
`uyeler`.`dersler` (DersId)
ON DELETE NO
ACTION
ON UPDATE NO
ACTION,
CONSTRAINT
`OgrenciId`
FOREIGN KEY
(OgrenciId)
REFERENCES
`uyeler`.`ogrenciler` (OgrenciId)
ON DELETE NO
ACTION
ON UPDATE NO
ACTION);
Daha önceden oluşturduğumuz 'Ogrenciler' ve 'Dersler' adındaki tabloların primary keylerini bu tabloda foreign key olarak belirledik.
Tablo yapılarımızı oluşturduktan sonra içlerine kayıt ekleyelim.
'Dersler' tablosu 'Ogrenciler' tablosu
Şimdi bu iki tablo arasındaki many-to-many ilişkiyi gösteren 'Kayit' tablosuna kayıt ekleyelim.
'Kayit' tablosu
Veritabanına kayıt ekleme işlemlerini tamamladıktan sonra Hibernate kısmına geçelim. Öncelikle boş bir proje açıyoruz. Açtığımız projeye daha önceki yazılarımda değindiğim Hibernate kütüphanelerini içeren User Libraryimizi dahil ediyoruz. Daha sonra veritabanımızda oluşturduğumuz tablolarımızın POJO sınıflarını oluşturuyoruz. 'Dersler' tablosunu eşlemek için aynı isimli bir java sınıfı oluşturuyoruz.
Dersler.java
Öğrenci bilgisini içeren 'Ogrenciler' adındaki tabloyu eşlemek için Ogrenciler adında yeni bir java sınıfı oluşturuyoruz.
Ogrenciler.java
Daha sonra veritabanında oluşturduğumuz tabloları eşlemek için XML mapping dosyalarını oluşturuyoruz.
Dersler.hbm.xml
'Dersler' tablosunun XML eşlemesini tamamladıktan sonra 'Ogrenciler' tablosunun XML eşlemesini yapıyoruz. Bu işlem için Ogrenciler.hbm.xml adında yeni bir XML dosyası oluşturuyoruz.
Ogrenciler.hbm.xml
XML mapping işlemini tamamladıktan sonra Hibernate configuration dosyamızı oluşturuyoruz.
hibernate.cfg.xml
Oluşturduğumuz bu xml dosyasına veritabanı bağlantı bilgilerimizi ve daha önceden oluşturduğumuz xml mapping dosyalarımızın kaynağını belirtiyoruz.
Daha sonra SessionFactory oluşturarak Hibernate işlemlerimizi sağlayan HibernateUtil adında yeni bir sınıf oluşturuyoruz.
HibernateUtil.java
Yukarıda belirttiğimiz tüm bu işlemlerden sonra ana sınıfımız olan Main sınıfında yeni ders kayıtları ve öğrenci kayıtları oluşturup, bu kayıtlar arasındaki ilişkiyi belirten kodu yazıyoruz.
Main.java
Kültürel Etkinlik ve Almanca adında yeni 2 ders kaydı oluşturduk. Aynı zamanda Zeki Bahar ve Kamil Gunes adında iki yeni öğrenci oluşturduk ve bu öğrencilerin Kültürel etkinlik ve Almanca derslerini almalarını sağladık. Buradan da anlaşılacağı üzere bir dersi birden fazla öğrenci alabilir ve bir öğrenci birden fazla ders alabilir (many-to-many ilişkisi).
Bu işlemler sonucunda veritabanımızdaki tablolarımızın son hali şu şekilde olacaktır.
Dersler tablosu Ogrenciler tablosu
Kayit tablosu
Burada yazıma son veriyorum. Bir sonraki yazımda görüşmek üzere. Esen kalın...
Hiç yorum yok:
Yorum Gönder