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.
Verilerimizi gorelim. tablolarimiza sag tiklayip view data diyelim..
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.
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
Leave a Reply