Hibernate Ders 02 – SecondaryTable

Herkese Merhaba Arkadaslar,
Bu yazimda Hibernate , Secondary Table ile ilgili bir ornek yapacagiz.Oncelikle bazi kavramlar hakkinda konusalim.

@SecondaryTable notasyonunu, pojo sinifimizda @Entity notasyonuyla birlikte kullanabiliriz. Adi uzerinde bu notasyon bizim icin ikinci bir tablo olusturur ve @Column notasyonu yardimiyla ikinci tablomuzla iliskilendirebiliriz.

Ornegimizde address alanini ikinci tablomuzla iliskilendirip kayit edecegiz.

Bir onceki derste gerekli kurulumlari anlatmaya calismistim.
Projemizde yeni bir package olusturuyoruz, ismine hibernate_SecondaryTable dedim.
yeni bir sinif olusturuyoruz, adi Customer olsun.

    private int id;
    private String name;
    private String address;

olmak uzere 3 tane degisken tanimladim . Bunlarin getter/setterlarini olusturuyoruz, bir onceki yazida belirttigimiz gibi Netbeanste kod kismina sag tiklayip insert getter setter dedigimizde bu isi bizim yerimize yapiyordu.

Customer.java

package hibernate_SecondaryTable;

/**
 *
 * @author Levent
 */
import java.io.Serializable;
import javax.persistence.*;

@Entity
@Table(name = "NEW_CUSTOMER_Table")
@SecondaryTable(name = "CUSTOMER_DETAILS")
public class Customer implements Serializable {

	private int id;
	private String name;
	private String address;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Column(table = "CUSTOMER_DETAILS")
	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}

@Entity annotation i kullanarak, sinifimizi veritabani ile iliskilendiriyoruz.
@Table(name = “NEW_CUSTOMER_Table”) ile veritabaninda kayit ettigimiz tablomuzun adini degistiriyoruz. Eger isim degismemis olsaydik tablomuz sinifimizla ayni isimle olacakti yani ; customer.
@SecondaryTable(name = “CUSTOMER_DETAILS”) ile ikinci bir tablo olusturuyoruz, istedigimiz degerleri bu tablomuzda tutabiliriz.

@Column(table = "CUSTOMER_DETAILS")
public String getAddress() {
    return address;
}

Bu notasyon ile adress bilgilerinin Secondary Table olan CUSTOMER_DETAILS tablosunda tutulacagini belirtmis oluyoruz. Sira geldi test sinifimiza.

CustomerTest.java

package hibernate_SecondaryTable;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

/**
 * 
 * @author Levent
 */
public class CustomerTest {

	public static void main(String[] args) {
		AnnotationConfiguration config = new AnnotationConfiguration();
		config.addAnnotatedClass(Customer.class);
		config.configure("hibernate.cfg.xml");

		new SchemaExport(config).create(true, true);
		// yeni bir schema olusturur.

		SessionFactory factory = config.buildSessionFactory();
		Session session = factory.getCurrentSession();
		session.beginTransaction();

		Customer customer = new Customer();
		customer.setAddress("istanbul");
		customer.setName("levent");

		Customer customer2 = new Customer();
		customer2.setAddress("karabuk");
		customer2.setName("recep");

		session.save(customer);
		session.save(customer2);

		session.getTransaction().commit();
	}
}

Calistirip sonucu gorelim.
Netbeans uzerinden tablolarimizi goruyoruz. Degistirdigimiz isimle new_customer_table ve secondary table olan customer_details tablolarimiz olustu.

hibernate2_tables

Verilerimizi gorelim. tablolarimiza sag tiklayip view data diyelim..
hibernate2_viewDatahibernate2_viewData2

Bir onceki ornekte yapmis oldugumuz konfigurasyon dosyasinda bir degisiklik yapmamiza
gerek yok 🙂  benim yaptigim gibi ayni proje uzerinden yeni package acarak orneklere devam edebilirsiniz. Asagida projenin Netbeansteki gorunumu mevcut, gordugunuz gibi yeni bir package acip yoluma devam ettim.

hibernate2_project
Not: Bir onceki ornekte bahsettigim gibi, yeni proje acip gerekli islemleri yapip, hibernate.cfg.xml dosyasindaki password alanini kendi sifreniz yapiniz.

Projenin kaynak kodlari icin : HibernateTutorial_2

Herkese Bol Javali Gunler.
Be an oracle man, import java.*;
Levent Erguder
injavawetrust

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *