30 Mart 2014 Pazar

Mapping Kavramı ve one-to-one(1-1) Association XML Mapping Yapısı 1.Bölüm

   Merhaba arkadaşlar,

   Bu yazımda sizlere Mapping kavramı ve one-to-one(1-1) Association Xml Mapping yapısından bahsedeceğim.

   Öncelikle Mapping kavramına değinecek olursak. Veritabanımızda bulunan tabloların Java sınıflarıyla eşleştirilmesine Mapping denir. Hibernate ile yaptığımız veritabanı işlemlerininin veritabanımıza yansıması için veritabanımızda bulunan her bir tabloyu onlara karşılık gelen Java sınıflarıyla eşleştirmeliyiz. Şimdi isterseniz bu eşleştirme işlemini nasıl yapıyoruz ona bir göz atalım.

   Veritabanımızda "Isci" adında bir tablo oluşturuyoruz. Bu tabloya id, ad, soyad, maas, adres sütunlarını ekliyoruz. İkinci bir tablo olarak adres detaylarını içeren "Adres" adında bir tablo oluşturuyoruz. Bu tabloya da id, mahalle, sehir ve postakodu alanlarını ekliyoruz. Bu iki tablo arasındaki ilişkinin de one-to-one olduğunu belirtiyoruz.

   Tablolarımızı oluşturduktan sonra geçen hafta bahsettiğimiz POJO sınıflarını oluşturuyoruz. "Isci" tablosuna karşılık gelen POJO sınıfını aşağıdaki gibi oluşturuyoruz. 

Isci.java
public class Isci {
         private int id;
         private String ad;
         private String soyad;
         private int maas;
         private Adres adres;

public Isci() {}                 //default constructor
public Isci(String ad, String soyad, int maas, Adres adres ) {       //parametreli constructor        
                 this.ad = ad;
                 this.soyad = soyad;
                 this.maas = maas;
                 this.adres = adres;
}

     //getter&setter methodları
  public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAd() {
return ad;
}
public void setAd(String ad) {
this.ad = ad;
}
public String getSoyad() {
return soyad;
}
public void setSoyad(String soyad) {
this.soyad = soyad;
}
public int getMaas() {
return maaş;
}
public void setMaas(int maas) {
this.maaş = maaş;
}
public Adres getAdres() {
return adres;
}
public void setAdres(Adres adres) {
this.adres = adres;
}
}

Adres tablomuza karşılık gelen Java sınıfını oluşturalım.

Adres.java
Yukarıda yaptığımız aynı işlemle Adres tablosuna karşılık gelen Adres.java sınıfını oluşturuyoruz.

POJO sınıflarımızı oluşturduktan sonra her bir sınıfa ait XML Mapping dosyası oluşturuyoruz. Yeni bir XML dosyası oluşturup Isci.hbm.xml ismini veriyoruz. Bu dosyaya tablomuz ve tablomuzda bulunan sütunlara karşılık gelecek olan bilgileri yazıyoruz.

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC 
"//Hibernate/Hibernate Mapping DTD//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping>
   <class name="Isci" table="Isci"> 
       <meta attribute="class-description"> Bu sinif isci bilgilerini icerir. </meta> 
       <id name="id" type="int" column="id"> <generator class="native"/> </id>
       <property name="ad" column="ad" type="string"/> 
       <property name="soyad" column="soyad" type="string"/>
       <property name="maas" column="maas" type="int"/>
       <one-to-one name="adres" column="adres" unique="true" class="Adres" not-null="true"/>    
  </class>
</hibernate-mapping>

Yukarıda belirttiğimiz one-to-one tagı Isci tablosu ile Adres tablosu arasındaki ilişkiyi yansıtır.

Şimdi diğer tablomuz olan Adres tablomuzun XML Mapping dosyasını oluşturalım. Yine aynı yöntemle yeni bir XML dosyası oluşturup Adres.hbm.xml adını veriyoruz.

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC 
"//Hibernate/Hibernate Mapping DTD//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping>
   <class name="Adres" table="Adres"> 
       <meta attribute="class-description"> Bu sinif adres bilgilerini icerir. </meta> 
       <id name="id" type="int" column="id"> <generator class="native"/> </id>
       <property name="mahalle" column="mahalle" type="string"/> 
       <property name="sehir" column="sehir" type="string"/>
       <property name="postakodu" column="postakodu" type="string"/>    
  </class>
</hibernate-mapping>

Şimdiye kadar veritabanımızda bulunan tablolarımıza karşılık gelen POJO sınıflarımızı ve XML Mapping dosyalarımızı oluşturduk. Oluşturduğumuz Isci.hbm.xml ve Adres.hbm.xml dosyalarını mapping resource olarak hibernate.cfg.xml dosyamıza eklemeyi unutmuyoruz.
       <mapping resource="Isci.hbm.xml"></mapping>
       <mapping resource="Adres.hbm.xml"></mapping>
 Haftaya bu oluşturduğumuz yapılar üzerinden devam edeceğiz. Takipte olmayı ihmal etmeyin...

Referanslar:









Hiç yorum yok:

Yorum Gönder