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 IDEMaven 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