@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
Bu anotasyon adından da anlaşılacağı gibi kalıtımda tek bir tablonun kullanılacağını göstermektedir. (Single table -> Tek tablo) @Inheritance anotasyonunun varsayılan stratejisi SINGLE_TABLE'dır. Bu sebepten sadece @Inheritance yazılırsa değişen hiçbir şey olmaz.
@DiscriminatorColumn
Oluşacak bu tablonun DTYPE adında bir kolonu olacaktır. Varsayılan tipi ise VARCHAR'dır. Bu anotasyonu sayesinde hem kolonun ismini hem de tipini değiştirebiliriz.
@DiscriminatorColumn(name="canli",discriminatorType=DiscriminatorType.STRING) yazıldığı taktirde kolonun adı canli, tipi string olacaktır.
@DiscriminatorValue
Bu anotasyon kalıtım alınan diğer sınıflar için kullanılır. Oluşan yeni kolondaki kayıt isimlerini değiştirir. @DisciriminatorValue(name="surungen") denilirse kolona surungen yazılır.
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.DiscriminatorColumn; import javax.persistence.DiscriminatorType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="canli",discriminatorType=DiscriminatorType.STRING) //SINGLE_TABLE ile tek bir tablo oluşacak. 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; import javax.persistence.DiscriminatorValue; @Entity @DiscriminatorValue(value="hayvan") 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; import javax.persistence.DiscriminatorValue; @Entity @DiscriminatorValue(value="surungen") 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 21, 2016 10:28:41 AM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: Canli
Haz 21, 2016 10:28:41 AM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: Canli
Haz 21, 2016 10:28:41 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: insert into Canli (ad, solonumTuru, canli) values (?, ?, 'Canli')
Hibernate: insert into Canli (ad, solonumTuru, omur, yasamAlani, canli) values (?, ?, ?, ?, 'hayvan')
Hibernate: insert into Canli (ad, solonumTuru, omur, yasamAlani, zehirMiktari, canli) values (?, ?, ?, ?, ?, 'surungen')
Canli adında tablo oluştu. Diğer alanlar bu tablonun içerisine eklendi.
8-Veritabanı Tablosu
Tek bir tablo mevcut. Bütün değişkenler bu tabloya eklendi. canli adında bir kolon oluştu. Normalde DTYPE adında kolon olacaktı ama biz değiştirdik. 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.
RTP in slot machines - Poker News Guides
YanıtlaSilThe RTP of a 카지노검증 slot machine e스포츠 varies with the 윌리엄 힐 most popular and most popular slot games. The highest RTPs come from 룰렛 테이블 the RTP 헐리우드 노출 of many