Monday, November 28, 2022

Membuat CRUD Menggunakan ZKoss Hibernate

 


Pada artikel kali ini akan membuat CRUD ( Create Update Delete Read ) MVC ZK Framework menggunakan hibernate dan database postgres di Netbeans.

Tools yang digunakan :

  • Netbeans, 
  • Glassfish sever,
  • postgres database.

Kesiapan yang sebelum membuat project :


Berikut adalah cara membuat CRUD menggunakan ZKoss Hibernate

1. Buat Table 

CREATE TABLE public.mahasiswa

(

  nama character(30),

  id integer NOT NULL DEFAULT nextval('mahasiswa_id_seq'::regclass),

  nim character(10),

  CONSTRAINT id_pkey PRIMARY KEY (id)

)

WITH (

  OIDS=FALSE

);

ALTER TABLE public.mahasiswa

  OWNER TO postgres;

 

2. Buat Project

2.1. Buat Project ZK 

2.2. Klik New Project  

2.3. Klik Java Web

2.4. Klik ZK700CE JavaEE6 Application , Contoh  :  ZK Crud

2.5. Setelah itu masukkan library Postegres ke Netbeans

    • Klik Kanan Project
    • Pilih Properties 
    • klik Libraries   
    • lalu klik Add Library 
    • Pilih PostgreSQL JDBC Drive 
    • lalu Klik OK


3. Setting Hibernate 

Generate Hibernate Configuration Wizard

  • Klik pada project 
  • Klik New 
  • Klik Hibernate  
  • Klik Hibernate Configuration Wizard 
  • Klik Next
  • Isi Folder dengan src\java 
  • Klik Next  
  • Pilih Database Connection yang sudah dibuat.

Catatan : Jika belum ada database maka 

  • Pilih New Database Connection 
  • Pilih Driver, isikan dengan PostgreSQL 
  • Klik Next 
  • Isikan host, database, username, password disesuaikan dengan database yang dibuat --> 
  • Klik Test Connection 
  • Klik Finish.

Generate Hibernate reverse engineering Wizard, 

  • klik nanan project 
  • Klik New 
  • Klik Hibernate
  • Hibernate reverse engineering Wizard  
  • Klik Next
  • Isi Folder dengan src\java 
  • Klik Next  
  • Klik Add All 
  • Klik Finish.

Generate Mapping Files and Pojos :

  • klik nanan project 
  • Klik New
  • Klik Hibernate 
  • Klik Hibernate Mapping Files and POJOs from database
  • isikan package dengan model
  • Klik Finish.

Catatan : jika tidak bisa generate Mapping Files and POJOs : cek nama table di database harus lowercase semua, jika sudah hapus file hibernate.reveng.xml terus coba generate ulang mulai dari Generate Hibernate reverse engineering Wizard.

Generate HibernateUtils :

  • Klik nanan project 
  • Klik New
  • Klik Hibernate
  • Isikan HibernateUtil.java 
  • Klik Next
  • isikan package dengan util 
  • Klik Finish.


4.  Design Tampilan: dengan nama file : index.zul


<?xml version="1.0" encoding="UTF-8"?>

<zk xmlns="http://www.zkoss.org/2005/zul">

    <window id="win" apply="com.crud.controller.IndexController">

        <groupbox id="gb" mold="3d" width="600px">

            <caption label="MAHASISWA"/>

            <grid>

                <columns>

                    <column align="right" width="150px"/>

                    <column />

                </columns>

                <rows>

                    <row>

                        <label value="Nim :"/>

                        <textbox id="txtNim" />

                    </row>

                    <row>

                        <label value="Nama :"/>

                        <textbox id="txtNama" />

                    </row>

                    <row spans="2">

                        <hbox>

                            <button id="btnAdd" label="ADD"/>

                            <button id="btnUpdate" label="UPDATE"/>

                            <button id="btnDelete" label="DELETE"/>

                        </hbox>

                    </row>

                </rows>

            </grid>

            <listbox id="lb" width="600px" mold="paging" pageSize="5">

                <listhead>

                    <listheader label="Nim" />

                    <listheader label="Nama" />

                </listhead>             

            </listbox>

        </groupbox>

    </window>

</zk>


5. Buat Render : IndexRenderer.java

import com.crud.vo.Mahasiswa;

import org.zkoss.zul.Listcell;

import org.zkoss.zul.Listitem;

import org.zkoss.zul.ListitemRenderer;

public class IndexRenderer implements ListitemRenderer {

    public void render(Listitem lstm, Object t, final int i) throws Exception {

        final Mahasiswa data = (Mahasiswa) t;

        Listcell cell = new Listcell(String.valueOf(data.getNim()));

        cell.setParent(lstm);

        cell = new Listcell(data.getNama());

        cell.setParent(lstm);

    }

}


6. Buat Controller : IndexController.java

import com.crud.renderer.IndexRenderer;

import com.crud.util.HibernateUtil;

import com.crud.vo.Mahasiswa;

import java.math.BigInteger;

import java.util.ArrayList;

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

import org.zkoss.zk.ui.Component;

import org.zkoss.zk.ui.util.GenericForwardComposer;

import org.zkoss.zul.ListModelList;

import org.zkoss.zul.Listbox;

import org.zkoss.zul.Textbox;


/**  control CRUD  */

public class IndexController extends GenericForwardComposer {

    private Listbox lb;

    private Textbox txtNim, txtNama;

    private List<Mahasiswa> listMhs = new ArrayList<Mahasiswa>();

    @Override

    public void doAfterCompose(Component comp) throws Exception {

        super.doAfterCompose(comp);

        loadData();

    }

    private void loadData() {

        Session sess = HibernateUtil.getSessionFactory().openSession();

        Query query = sess.createQuery("from Mahasiswa");

        listMhs = query.list();

        sess.close();

        //set data to listbox

        lb.setModel(new ListModelList(listMhs));

        lb.setItemRenderer(new IndexRenderer());

    }

    public void onClick$lb() {

        if (lb.getSelectedIndex() != -1) {

            txtNim.setValue(String.valueOf(listMhs.get(lb.getSelectedIndex()).getNim()));

            txtNama.setValue(listMhs.get(lb.getSelectedIndex()).getNama());

        } else {

            alert("Pilih Salah Data");

        }

    }

    public void onClick$btnAdd() {

        if (!txtNama.getValue().trim().equals("") && !txtNim.getValue().trim().equals("")) {

            Session sess = HibernateUtil.getSessionFactory().openSession();

            sess.beginTransaction();

            Integer id = ((BigInteger) sess.createSQLQuery("select nextval('mahasiswa_id_seq')").uniqueResult()).intValue();

            Mahasiswa data = new Mahasiswa();

            data.setId(id);

            data.setNim(txtNim.getValue());

            data.setNama(txtNama.getValue());

            sess.save(data);

            sess.getTransaction().commit();

            sess.close();

            loadData();

            clearField();

            alert("Added");

        } else {

            alert("Nama dan NIM tidak boleh kosong");

        }

    }

    public void onClick$btnUpdate() {

        if (!txtNama.getValue().trim().equals("") && !txtNim.getValue().trim().equals("")) {

            Session sess = HibernateUtil.getSessionFactory().openSession();

            sess.beginTransaction();

            Mahasiswa obj = (Mahasiswa) sess.get(Mahasiswa.class, listMhs.get(lb.getSelectedIndex()).getId());

            obj.setNama(txtNama.getValue());

            obj.setNim(txtNim.getValue());

            sess.update(obj);

            sess.getTransaction().commit();

            sess.close();

            loadData();

            clearField();

            alert("Updated");

        } else {

            alert("Nama dan NIM tidak boleh kosong");

        }

    }

    public void onClick$btnDelete() {

        if (!txtNama.getValue().trim().equals("") && !txtNim.getValue().trim().equals("")) {

            Session sess = HibernateUtil.getSessionFactory().openSession();

            sess.beginTransaction();

            Mahasiswa obj = (Mahasiswa) sess.get(Mahasiswa.class, listMhs.get(lb.getSelectedIndex()).getId());

            sess.delete(obj);

            sess.getTransaction().commit();

            sess.close();

            loadData();

            clearField();

            alert("Deleted");

        } else {

            alert("Nama dan NIM tidak boleh kosong");

        }

    }

    private void clearField() {

        txtNim.setValue("");

        txtNama.setValue("");

    }

}

 

Memunculkan Simbol & Emoji Pada OS Mac

  Memunculkan Simbol & Emoji  1. Buka aplikasi Pages / Notes pada Macbook. 2. Klik pada Menubar Edit --> Pilih Emoji and Symbols a...