CRUD Sederhana Menggunakan Entity Classes-JPA Netbeans Part 2

Setelah membuat entity classes dari tulisan sebelumnya, yang perlu kita lakukan adalah menggunakan si entity classes untuk mengakses database. Untuk ini, bisa di-run di kelas yang ada public static void main-nya. Atau kalo mau ngikut gw, gw bikin kelas sendiri yang nantinya punya method buat lihat, hapus ataupun nambah. Update c belum yah. Coz update itu mirip sama insert, cuma objeknya bukan objek baru… itu ajah.

Jadi, langkah pertama, bikin suatu kelas (kalo gw namanya “AksesMember”). Pastiin meng-import beberapa hal ini (yang warnanya merah):

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.Query;
/**
 *
 * @author arby
 */
public class AksesMember {

}

Untuk lihat member, kita bikin satu method “lihatMember”. Di setiap proses pengaksesan data via persistence, kita musti punya yang namanya objek dari kelas “EntityManager”. Untuk ngebikin objeknya, kita butuh nama dari persistence.xml yang udah kita bikin sebelumnya. Untuk jelasnya, liat langsung ajah yah…

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.Query;
/**
 *
 * @author arby
 */
public class AksesMember {
    public void lihatMember(){
        EntityManager entityManager = Persistence.createEntityManagerFactory("JavaApplication3PU").createEntityManager();
        Query kueri = entityManager.createNamedQuery("MemberC.findAll");
        List hasil = kueri.getResultList();
        for(MemberC m:hasil){
            System.out.println(m.getNama());
        }
    }
}

Dan perhatiin jugak, kalo kueri di atas, kita manggil “MemberC.findAll”. Kueri tersebut merupakan nama query yang mengacu ke query “SELECT m FROM MemberC m”. Tercantum di kelas “MemberC”. Bisa ditambahin jugak. Karena querynya agak beda dari biasanya (SQL), untuk dokumentasi query (JPQL), bisa dilihat di situs oracle.

Kelas di atas bisa langsung dijalanin dari kelas Main/Driver. Cuma sebelumnya, import MySQL Driver (JDBC Driver buat MySQL) di project kita. Klik kanan di bagian “Libraries”, pilih “Add Library”, cari “MySQL JDBC Driver”. Tekan “Add Library”.

Pilih MySQL Driver

Main-nya isinya gini:

/**
 *
 * @author arby
 */
public class JavaApplication3 {

    public static void main(String[] args) {
        AksesMember am = new AksesMember();
        am.lihatMember();
    }

}

Nanti, kalau dijalanin, jadinya gini:

Hasil AKhir

Selesai!!!

Apah??! Yang insert sama delete belum?! Tapi… gw capek! Kamu pelajari sendiri ajah, yah. Intinya, ada objek dari “EntityManager”. Dan untuk transaksi yang butuh commit (perubahan data), ada suatu transaction di dalamnya. Jadi jangan lupa buat manggil method begin() sama end() dari transaksi yang dipanggil objek “EntityManager” tadi.

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.Query;
/**
 *
 * @author arby
 */
public class AksesMember {
    public void lihatMember(){
        EntityManager entityManager = Persistence.createEntityManagerFactory("JavaApplication3PU").createEntityManager();
        Query kueri = entityManager.createNamedQuery("MemberC.findAll");
        List hasil = kueri.getResultList();
        for(MemberC m:hasil){
            System.out.println(m.getNama());
        }
    }

    public void tambahMember(){
        //buat objek Member
        MemberC member = new MemberC();
        member.setIdReg("M_003");
        member.setNama("Kim Ryewook");
        member.setUmur(25);

        //simpan pake JPA
        EntityManager em = Persistence.createEntityManagerFactory("JavaApplication3PU").createEntityManager();
        em.getTransaction().begin();
        em.persist(member);
        em.getTransaction().commit();

        //lihat hasil isi database setelah ditambah
        System.out.println("\nIsi Setelah Ditambah");
        this.lihatMember();
    }

    public void hapusMember(){
        //cari Member masukin dalam objek
        EntityManager entityManager = Persistence.createEntityManagerFactory("JavaApplication3PU").createEntityManager();
        entityManager.getTransaction().begin();
        Query kueri = entityManager.createNamedQuery("MemberC.findByIdReg");
        kueri.setParameter("idReg", "M_003");
        MemberC memberHapus = (MemberC)kueri.getSingleResult();

        //hapus objek dan commit
        entityManager.remove(memberHapus);
        entityManager.getTransaction().commit();

        //lihat isi database kembali
        System.out.println("\nIsi Setelah Dihapus");
        this.lihatMember();
    }
}

Isi kelas Main-nya gini:

/**
 *
 * @author arby
 */
public class JavaApplication3 {
    public static void main(String[] args) {
        AksesMember am = new AksesMember();
        am.lihatMember();
        am.tambahMember();
        am.hapusMember();
    }
}

Hasil Akhir:

Final Result

Begitulaaahhh… kelihatan kan bedanya pengaksesan JDBC ama JPA?! Di sini kita gak butuh query (at least, query SQL), dan gak ngatur2 konfigurasi akses database di sebuah kelas, tapi di cukup di file XML ajah.

Btw… gw lupa bilang, ORM ituh agak2 dibenci ama developer lhoh… gw lupa alasannya, tapi katanya mereka agak kurang sukak ama ORM. Kalo MVC c bedaan.

Dannn… ini potongan program buat acuan update.

    public void ubahMember(){
        EntityManager em = Persistence.createEntityManagerFactory("JavaApplication3PU").createEntityManager();
        Query kueri = em.createNamedQuery("MemberC.findByIdReg");
        kueri.setParameter("idReg", "M_001");
        MemberC memberU = (MemberC) kueri.getSingleResult();
        memberU.setNama("Lee Aiden");
        em.getTransaction().begin();
        em.persist(memberU);
        em.getTransaction().commit();
    }
Advertisements

2 thoughts on “CRUD Sederhana Menggunakan Entity Classes-JPA Netbeans Part 2

  1. Mas artikelnya bagus. TP ORM itu yg mana ya ?? aq baru belajar. Semisal ada query begini Gmn custome nya

    SELECT * FROM
    (SELECT * FROM ROOT.EXPERIENCE_CUZ)A
    INNER JOIN
    (SELECT * FROM ROOT.CUSTOMER)B
    ON A.CUSTOMER_ID = B.CUSTOMER_ID
    ;

    buatin lg mas artikelny

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s