4 Mayıs 2014 Pazar

Hibernate Annotations ile many-to-one association

Merhaba arkadaşlar,

Geçen hafta Hibernate anotasyonlarından bahsetmiştik. Bu hafta Hibernate anotasyonlarını kullanarak örnek bir proje oluşturacağım.

Öncelikle projemizde kullanacağımız Isci ve Departman adındaki tablolarımızı MySQL Workbench' de oluşturuyoruz.
Isci tablosunu ve attribute'lerini aşağıdaki gibi oluşturuyoruz.
Tablolar arasındaki ilişkimiz many-to-one olduğundan dolayı one taraf olan yani Departman tablosunun primary keyini many taraf olan Isci tablosuna foreign key olarak ekliyoruz.
Isci tablomuzu oluşturduktan sonra Departman tablomuzu ve attribute'lerini aşağıdaki gibi oluşturuyoruz.

Tablolarımızı oluşturduktan sonra içlerine birkaç veri ekliyoruz.
Verileri girerken many-to-one ilişkimize dikkat ediyoruz. Bu ilişkide aynı departmanda birden fazla işçi çalışabilir ve bir işçi sadece bir departmanda çalışabilir. 
Tablolarımızı oluşturduktan sonra java sınıflarımızı oluşturacağız.
Isci tablosuna karşılık gelen Isci.java sınıfımızı aşağıdaki gibi oluşturuyoruz.

Veritabanımızda oluşturduğumuz Isci tablosunun adını ve sütunlarını bu sınıf içerisinde belirtiyoruz.
Tablo adını @Table(name="isci") anotasyonuyla belirtiyoruz. Tablo sütunlarını ise @Column(name="ad") anotasyonu ile belirtiyoruz. Tablomuzun primary keyini ise @Id, @GeneratedValue ve @Column(name="isciID") anotasyonları ile belirtiyoruz. Many-to-one ilişkisini @ManyToOne anotasyonu ve Departman tablosundan gelen foreign key departmanID'yi @JoinColumn(name="departmanID") anotasyonu ile belirtiyoruz.
Daha sonra Isci sınıfımızın default constructor'ını ve parametreli constructor'ını yazıyoruz. Ve son olarak tablomuzun sütunlarının getter&setter methodlarını yazıyoruz.
Isci.java sınıfımızı oluşturduktan sonra Departman tablomuza karşılık gelen Departman.java sınıfımızı oluşturalım.
Departman sınıfımızı yukarıdaki gibi oluşturduktan sonra ana sınıfımız olan Main.java sınıfını oluşturalım ve üzerinde işlem yapalım.
Session factory oluşturmak için HibernateUtil.java sınıfını kullanıyorduk bu projemize onu da dahil ediyoruz.

Main sınıfımızda session oluşturup, transaction başlatıyoruz. Daha sonra Departman sınıfımızdan obje oluşturup, setDepartmanAdi() methodunu kullanarak "Ulastirma" adında yeni bir departman oluşturuyoruz.
Daha sonra oluşturduğumuz bu objeyi sessiona kaydediyoruz.
Yeni bir Isci oluşturmak için ise Isci sınıfımızdan obje oluşturup constructorına ilgili değerleri yazıyoruz. Bu yolla Ali Akyüz ve Mehmet Öztürk adında iki yeni işçi oluşturuyoruz. Oluşturduğumuz bu işçilere daha önceden oluşturduğumuz "Ulaştırma" departmanına kaydediyoruz. Daha sonra yaptığımız bu değişiklikleri veritabanına göndermek için transaction.commit() komutunu kullanıyoruz.
Sonraki adım olarak oluşturduğumuz sınıfları hibernate configuration dosyamıza belirtiyoruz.
hibernate.cfg.xml
Ve artık projemizi çalıştırabiliriz. Sonuç olarak Ali Akyüz ve Mehmet Öztürk adında iki yeni işçi ve Ulaştırma adında yeni bir departman oluşacak ve bu iki işçi Ulaştırma deparmanına atanacaklardır.

Bugün Hibernate anotasyonlarını kullanarak nasıl many-to-one ilişki oluştulur örnek proje üzerinde görmüş olduk. Haftaya bir başka konu ile birlikte olacağız. Takipte kalmayı ihmal etmeyiniz...


Hiç yorum yok:

Yorum Gönder