@SecondaryTable
SeconderyTable ikinci bir tablo oluşturmak için kullanılır. Böylece iki adet tablo olur. Oluşan diğer tabloya ikincil tablo denir. İstediğimiz kolonları ikincil tabloya kaydedebiliriz fakat kaydetmediğimiz her değişken varsayılan olarak ilk tabloda yer alır.@SeconderyTable(name="UyeBilgi") şeklinde kullanı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ı
package com.hasanburakavci; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SecondaryTable; @Entity //SecondaryTable ile veritabanında UyeBilgi adında tablo oluşturduk. @SecondaryTable(name="UyeBilgi") public class Uye { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String ad; private String soyad; //adres değişkeni UyeBilgi tablosuna kaydedilecek. @Column(table="UyeBilgi") private String adres; //tel değişkeni UyeBilgi tablosuna kaydedilecek. @Column(table="UyeBilgi") private long tel; //-----------Setter-Getter-------- 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 String getAdres() { return adres; } public void setAdres(String adres) { this.adres = adres; } public long getTel() { return tel; } public void setTel(long tel) { this.tel = tel; } }
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.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(); //uye1 nesnesi oluşturuluyor. Uye uye1=new Uye(); uye1.setAd("Burak"); uye1.setSoyad("Avci"); uye1.setAdres("Turkey"); uye1.setTel(1234567); try { session.beginTransaction(); //oluşturulan uye1 veritabanına kaydediliyor. session.save(uye1); 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">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.Uye"/>
</session-factory>
</hibernate-configuration>
7-Konsol
.
.
.
INFO: HHH000126: Indexes: [prımary]
Haz 17, 2016 3:01:58 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: UyeBilgi
Haz 17, 2016 3:01:58 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: UyeBilgi
Haz 17, 2016 3:01:58 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: insert into Uye (ad, soyad) values (?, ?)
Hibernate: insert into UyeBilgi (adres, tel, id) values (?, ?, ?)
8-Veritabanı Tabloları

Uye asıl oluşturduğumuz tablodur. ad ve soyad kolonlarına karışmadığımız için bu tabloda yer aldı.

UyeBilgi ikincil olarak oluşturduğumuz tablodur. tel ve adres kolonuna @Column(table="UyeBilgi") dediğimiz için bu tabloda yer aldı. Id değeri ise otomatik olarak bu tabloda da bulunmaktadır.
Hiç yorum yok:
Yorum Gönder