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 🙂

hibernate4_table

bir de sonuclara bakalim simdi.

hibernate4_viewData

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

Print Friendly, PDF & Email

Leave a Reply

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