Hibernate Ders 04 – Compound Id
Merhaba Arkadaslar,
Bu yazimizda Hibernate , Compound Id (birlesik, birlestirmek) ile ilgili basit bir ornek yapmaya calisacagiz.
Projemizde yeni bir paket acalim ismi hibernate4_CompoundId olsun. Hemen Accounts adinda ilk sinifimizi olusturalim.
private int accountBalance;
olan bir degiskenimiz olsun, getter/ setter ini olusturalim . @Entity notasyonumuzu sinifimizin basina yazalim unutmadan 🙂
Ikinci bir sinif olusturalim simdi, CompoundKey olsun sinifimiz.
private int userId; private int accountId;
turunde iki degiskenimiz olsun, getter/ setter larimizi olusturalim. Bu sefer yapilandiricilarimizi da olusturalim. (Bu olusturma islemlerimizi Netbeans e birakalim, kod yazdigimiz yerde sag tiklayip insert code diyip Generate ile olayi bitirelim 🙂 )
Bu sinifimiz @Embeddable olacak, bir onceki yazimizda bununla ilgili bir ornek yapmistik.
Tekrar Accounts sinifimiza gelelim :
CompoundKey compoundKey;
CompoundKey sinifimiz turunden bir degisken tanimlayalim. Getter/Setter lari olusturduktan sonra @Id notasyonunu kullaniyoruz.
@Id public CompoundKey getCompoundKey() { return compoundKey; }
Gordugunuz gibi @Id notasyonunu compoundKey icin verdik. Daha oneki orneklerimizde
Accounts.java
package hibernate4_CompoundId; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; /** * * @author Levent */ @Entity public class Accounts implements Serializable { CompoundKey compoundKey; private int accountBalance; @Id public CompoundKey getCompoundKey() { return compoundKey; } public void setCompoundKey(CompoundKey compoundKey) { this.compoundKey = compoundKey; } public int getAccountBalance() { return accountBalance; } public void setAccountBalance(int accountBalance) { this.accountBalance = accountBalance; } }
CompoundKey.java
package hibernate4_CompoundId; import java.io.Serializable; import javax.persistence.Embeddable; /** * * @author Levent */ @Embeddable public class CompoundKey implements Serializable { private int userId; private int accountId; public CompoundKey() { } public CompoundKey(int userId, int accountId) { this.userId = userId; this.accountId = accountId; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public int getAccountId() { return accountId; } public void setAccountId(int accountId) { this.accountId = accountId; } }
Simdi de test etmek icin TestAccount sinifimizi olusturalim, bir onceki orneklerde kullandigimiz Test Siniflarindan birini kopyala yapistir yapabilirsiniz. Temelde aynilar.
TestAccount.java
package hibernate4_CompoundId; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.tool.hbm2ddl.SchemaExport; /** * * @author Levent */ public class TestAccount { public static void main(String[] args) { AnnotationConfiguration config = new AnnotationConfiguration(); config.addAnnotatedClass(Accounts.class); config.configure("hibernate.cfg.xml"); new SchemaExport(config).create(true, true); SessionFactory factory = config.buildSessionFactory(); Session session = factory.getCurrentSession(); session.beginTransaction(); CompoundKey key1 = new CompoundKey(100, 10001); Accounts account1 = new Accounts(); account1.setCompoundKey(key1); account1.setAccountBalance(8500); CompoundKey key2 = new CompoundKey(100, 20001); Accounts account2 = new Accounts(); account2.setCompoundKey(key2); account2.setAccountBalance(2500); session.save(account1); session.save(account2); session.getTransaction().commit(); } }
Dusunun ki, benim ayni bankada 2 farkli hesabim var 🙂 birinde 8500 TL digerinde 2500 TL 🙂 (not: kullanicim id:100 olsun account1 id 10001 account2 id 20001 olsun ) Burada hesaplarin idleri ile kullanici id yi birlestirmis olduk.
Calistirip sonucu gorelim !
Asagida gordunuguz gibi accounts tablomuz olustu 🙂
bir de sonuclara bakalim simdi.
Gordugunuz gibi sorunsuzca hesabimiza (10001,20001 hesap numarali ) paralarimizi (8500,2500) yatirdik 🙂
Yazimi burada sonlandiriyorum.
Kaynak kodlar: HibernateTutorial_4
Herkese Bol Javali Gunler 🙂
Be an oracle man , import java.*;
Levent Erguder
injavawetrust
Leave a Reply