25 Haziran 2016 Cumartesi

Hibernate Kalıtım(Inheritance)


Kalıtım (Inheritance)

Kalıtım nesne yönelimli programlama dillerinde bulunur. Bir sınıfta bulunan değişken ve metodların tekrar tanımlanmadan başka sınıflar tarafından kullanılabilmesidir. Kalıtım günlük hayatta kullanılan kalıtım ile aynıdır. Kalıtım alınan sınıf ata (parent) sınıf, kalıtım alan sınıf ise çocuk(child) sınıftır. Tek farkı gerçek hayatta iki atadan kalıtım alınırken programlamada tek bir sınıftan alınmasıdır. Çocuk sınıflar ata sınıfın tüm değişken ve metodlarına otomatik olarak sahip olur. Fakat çocuk sınıfta olan değişken ve metodlar ata sınıfta olmak zorunda değildir.


0-Kullanılan Teknolojiler

Eclipse IDE
Maven 3.3.9
Hibernate 4.0.1.Final
MySQL 5.1


1-Proje




2-Entity (Model) Sınıfı


Canli.java

package com.hasanburakavci.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Canli {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private int id;
        private String ad;
        private String solonumTuru;
 
        //----Yapılandırıcı------
        public Canli() {
  
        }
 
        //-------Setter-Getter------
        
}


Hayvan.java

package com.hasanburakavci.model;

import javax.persistence.Entity;

@Entity
public class Hayvan extends Canli {
        private int omur;
        private String yasamAlani;
 
        //----Yapılandırıcı------
        public Hayvan() {
   
        }
  
        //-------Setter-Getter------
        
}


Surungen.java

package com.hasanburakavci.model;

import javax.persistence.Entity;

@Entity
public class Surungen extends Hayvan {
        private int zehirMiktari;
  
        //----Yapılandırıcı------
        public Surungen() {
   
        }
        //-------Setter-Getter------
        
}


3-HibernateUtil Sınıfı

package com.hasanburakavci.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class HibernateUtil {

        //SessionFactory oluşturuluyor.
        private static SessionFactory sessionFactory;
        static{
                Configuration configuration = new Configuration().configure();
        sessionFactory = configuration.buildSessionFactory();
        }
        //Diğer sınıflardan getSessionFactory metoduyla sessionFactory çağırılıyor.
        public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}



4-Hibernate Application Sınıfı

package com.hasanburakavci;

import org.hibernate.Session;

import com.hasanburakavci.model.Canli;
import com.hasanburakavci.model.Hayvan;
import com.hasanburakavci.model.Surungen;
import com.hasanburakavci.util.HibernateUtil;

public class HibernateApplication {
     public static void main(String[] args){
          //HibernateUtil sınıfından SessionFactory çağrıllp Session oluşturuluyor.
          Session session= HibernateUtil.getSessionFactory().openSession();
          
          //Canli nesnesi oluşturuluyor
          Canli canli= new Canli();
          canli.setAd("Bakteri");
          canli.setSolonumTuru("O2siz");
          
          //Hayvan nesnesi oluşturuluyor.
          Hayvan hayvan=new Hayvan();
          hayvan.setAd("Balik");
          hayvan.setSolonumTuru("Solungac");
          hayvan.setYasamAlani("Deniz");
          hayvan.setOmur(5);
            
          //Sürüngen nesnesi oluşturuluyor.
          Surungen surungen = new Surungen();
          surungen.setAd("Yilan");
          surungen.setSolonumTuru("Akciger");
          surungen.setYasamAlani("Kara");
          surungen.setZehirMiktari(100);

          try{
                session.beginTransaction();
                 session.save(canli);
                 session.save(hayvan);
                 session.save(surungen);
               session.getTransaction().commit();
          } catch (Exception e) {
               /*Eğer hata meydana gelirse Transaction ile yapılan işlem 
               geriye sarılıp iptal eiliyor*/
               session.getTransaction().rollback();
          }finally {
               //her durumda session işlemi sonlandırılıyor.
               session.close();
          }
  
     }
}


5-Pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
  <groupId>com.hasanburakavci</groupId>
  <artifactId>MerhabaHibernate</artifactId>
  <version>0.0.1-SNAPSHOT</version>
<dependencies>
        <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
  <version>5.1.6</version>   </dependency>   <dependency>   <groupId>org.hibernate</groupId>   <artifactId>hibernate-core</artifactId>   <version>4.0.1.Final</version>   </dependency>   </dependencies> </project>


6-Hibernate.cfg.xml Dosyası

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <mapping class="com.hasanburakavci.model.Canli"/>
        <mapping class="com.hasanburakavci.model.Hayvan"/>
        <mapping class="com.hasanburakavci.model.Surungen"/>
        </session-factory>
</hibernate-configuration>


7-Konsol

.
.
.
INFO: HHH000396: Updating schema
Haz 20, 2016 6:57:43 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: Canli
Haz 20, 2016 6:57:43 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: Canli
Haz 20, 2016 6:57:44 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: insert into Canli (ad, solonumTuru, DTYPE) values (?, ?, 'Canli')
Hibernate: insert into Canli (ad, solonumTuru, omur, yasamAlani, DTYPE) values (?, ?, ?, ?, 'Hayvan')
Hibernate: insert into Canli (ad, solonumTuru, omur, yasamAlani, zehirMiktari, DTYPE) values (?, ?, ?, ?, ?, 'Surungen')
Canli adında tablo oluştu. Diğer alanlar bu tablonun içerisine eklendi.



8-Veritabanı Tabloları




Tek bir tablo mevcut. Bütün değişkenler bu tabloya eklendi. DTYPE adında bir alan mevcut. Bu alan Entity sınıflarını göstermektedir. Canli sınıfında 3 değişken tanımlandığı için sadece 2 kolonu mevcut. Hayvan sınıfında 2 değişken tanımlandı ancak Canlı sınıfına ait 2 değişkeni de kullanabildiği için toplam 5 kolonu sahip oldu. Surungen sınıfı hem Canlı hem de Hayvan sınıflarının değişkenlerini kullanabiliyor. Toplamda 6 kolonu var.

Hiç yorum yok:

Yorum Gönder