JSF CRUD dengan Hibernate (Bag. 2, Selesai)

Pada bagian 1, kita sudah mempelajari:

  • Membuat Database kuliah.sql
  • Membuat Project Baru
  • Konfigurasi Hibernate
  • Membuat Helper File
  • Menggunakan POJO untuk menghubungkan Hibernate Mapping Files dan Java Classes
  • Membuat Helper Class
  • Penggunaan HQL Query
  • Membuat JSF Managed Bean
  • Membuat Template dan Halaman Web
  • Menjalankan Project

Selanjutnya, pada bagian 2, kita akan membuat fungsi create, delete dan update untuk entitas dosen saja sebagai contoh.

Pertama, buka kembali project KuliahCRUD yang telah dibuat.

Delete

Langkah-langkah yang akan kita lakukan adalah:

Tambahkan helper method hapusDataDosen() pada file DosenHelper.java

    public boolean hapusDataDosen(Dosen dosen) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        org.hibernate.Transaction tx = session.beginTransaction();
        try {
            session.delete(dosen);
            tx.commit();
            return true;
        } catch (Exception e) {
            tx.rollback();
            e.printStackTrace();
            return false;
        }
    }

Tambahkan Method deleteDosen() pada DosenController.java

public void deleteDosen() {
    Dosen dosen = (Dosen) getDosen().getRowData();
    helper.hapusDataDosen(dosen);
}

Panggil Method deleteDosen() pada halaman index.xhtml

<h:column>
    <f:facet name="header">
        <h:outputText value=" " />
    </f:facet>
    <h:commandLink action="#{dosenController.deleteDosen()}" value="Delete" />
</h:column>

Update

1

Langkah-langkah yang akan kita lakukan adalah:

Tambahkan helper method editDataDosen() pada file DosenHelper.java

    public boolean editDataDosen(Dosen dosen) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        org.hibernate.Transaction tx = session.beginTransaction();
        try {
           session.update(dosen);
           tx.commit();
           return true;
        } catch (Exception e) {
            tx.rollback();
            e.printStackTrace();
            return false;
        }
    }

Tambahkan Method updateDosen() dan preapareUpdate() pada DosenController.java

    public String updateDosen() {
        if (helper.editDataDosen(current)) {
            return "/index";
        }
        return "";
    }

    public String prepareUpdate() {
        current = (Dosen) getDosen().getRowData();
        return "/dosen/update";
    }

Buat Halaman Update.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="../template/template.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core">

    <ui:define name="top">
        Top
    </ui:define>

    <ui:define name="left">
        Left
    </ui:define>

    <ui:define name="body">
        <f:view>
            <p><h:message id="errors_nidn" for="nidn" style="color:red"></h:message></p>
            <p><h:message id="errors_jk" for="jk" style="color:red"></h:message></p>
            <h:form>
                <h:panelGrid border="1" columns="2">
                    <h:outputText value="NIDN"></h:outputText>
                    <h:outputText id="nidn" value="#{dosenController.selected.nidn}" />
                    <h:outputText value="Nama"></h:outputText>
                    <h:inputText value="#{dosenController.selected.nama}" />
                    <h:outputText value="Jenis Kelamin"></h:outputText>
                    <h:inputText id="jk" value="#{dosenController.selected.jk}" >
                    </h:inputText>
                    <h:outputText value="Alamat"></h:outputText>
                    <h:inputText value="#{dosenController.selected.alamat}" />
                    <h:commandButton value="editDosen" action="#{dosenController.updateDosen()}" />
                </h:panelGrid>
            </h:form>
        </f:view>
    </ui:define>
</ui:composition>

Panggil Method prepareDosen() pada halaman index.xhtml

<h:column>
    <f:facet name="header">
        <h:outputText value=" " />
    </f:facet>
    <h:commandLink action="#{dosenController.updateDosen()}" value="Edit" />
</h:column>

Create

Capture

Langkah-langkah yang akan kita lakukan adalah:

Tambahkan helper method simpanDataDosen() pada file DosenHelper.java

    public boolean simpanDataDosen(Dosen dosen) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        org.hibernate.Transaction tx = session.beginTransaction();
        try {
            session.save(dosen);
            tx.commit();
            return true;
        } catch (Exception e) {
            tx.rollback();
            e.printStackTrace();
            return false;
        }
    }
}

Tambahkan Method addDosen() dan prepareAdd() pada DosenController.java

    public String addDosen() {
        if (helper.simpanDataDosen(current)) {
            return "/index";
        }
        return "";
    }

    public String prepareAdd(){
        return "/dosen/create";
    }

Buat Halaman Create.xhtml

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="../template/template.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core">

    <ui:define name="top">
        Top
    </ui:define>

    <ui:define name="left">
        Left
    </ui:define>

    <ui:define name="body">
        <f:view>
            <p><h:message id="errors_nidn" for="nidn" style="color:red"></h:message></p>
            <p><h:message id="errors_jk" for="jk" style="color:red"></h:message></p>
            <h:form>
                <h:panelGrid border="1" columns="2">
                    <h:outputText value="NIDN"></h:outputText>
                    <h:inputText id="nidn" value="#{dosenController.selected.nidn}" required="true">
                    </h:inputText>
                    <h:outputText value="Nama"></h:outputText>
                    <h:inputText value="#{dosenController.selected.nama}" />
                    <h:outputText value="Jenis Kelamin"></h:outputText>
                    <h:inputText id="jk" value="#{dosenController.selected.jk}" >
                    </h:inputText>
                    <h:outputText value="Alamat"></h:outputText>
                    <h:inputText value="#{dosenController.selected.alamat}" />
                    <h:commandButton value="addDosen" action="#{dosenController.addDosen()}" />
                    <h:commandLink action="#{dosenController.prepareList}" value="View All List" />
                </h:panelGrid>
            </h:form>
        </f:view>
    </ui:define>
</ui:composition>

Panggil Method addDosen() pada halaman index.xhtml

Tambahkan command button untuk memanggil method tersebut.

<h:commandButton action="#{dosenController.prepareAdd()}" value="Tambah" />

One thought on “JSF CRUD dengan Hibernate (Bag. 2, Selesai)

  1. Pingback: JSF CRUD dengan Hibernate (Bag. 1) | Woosah - Bernafas di Jogja

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