Skip to main content

Tutorial Hibernate Dengan Java Destop (SE) CRUD (PART 2: Select)

Selamat siang,
Kali ini saya menulis artikel tentang menampilkan & filter data dari database ke JTable dengan menggunakan Hibernate Framework, artikel ini adalah lanjutan dari artikel Artikel Part 1 , teman-teman yang sudah mencoba artikel saya yang pertama tinggal modifikasi project dari artikel saya yang pertama saja Artikel Part 1

Langkah 1 :  Mofikasi Tampilan FormCRUD yang pernah di buat di artikel sebelumnya

Langkah 2 : Di package util buat file baru dengan nama JTableHandler.java


File : JTableHandler.java

 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package util;

import entity.Karyawan;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author kurnia_syukur
 */
public class JTableHandler {

    public void fillGrid(JTable table,String kriteria) {
        DefaultTableModel model =  (DefaultTableModel) table.getModel();
        model.getDataVector().removeAllElements();
        
     
        try {
            new SchemaBuilder().build();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
        System.out.println("oke");

        try {
            SessionFactory sf = new Configuration().configure().buildSessionFactory();
            Session s = sf.openSession();
            s.beginTransaction();

            //Query q = s.createQuery("from Karyawan");
            //List listContact = q.list();
             
            Criteria c = s.createCriteria(Karyawan.class);
            c.add(Restrictions.like("nama", "%"+kriteria+"%")); 
            List list = c.list(); 
            Iterator i = list.iterator();
            while (i.hasNext()) {
                Karyawan k = (Karyawan) i.next();
                Object[] o = new Object[]{k.getNik(),k.getNama(),k.getAlamat()};
                model.addRow(o);
                
            }
        } catch (HibernateException e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }
}

       
 


Langkah 3 : Modifikasi Kode Program FormCRUD

Modifikasi File FormCRUD.Java
             
 /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package cobahibernate;

import entity.Karyawan;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JOptionPane;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import util.JTableHandler;
import util.SchemaBuilder;

/**
 *
 * @author kurniasyukur
 */
                                  /*PENAMBAHAN 1 : Implemet KeyListener*/
public class FormCRUD extends javax.swing.JFrame implements  KeyListener{

    /**
     * Creates new form FormCRUD
     */
     
    /*PENAMBAHAN 2 : MEMBUAT INSTANCE DARI CLASS JTableHandler*/
    private  JTableHandler tableHandler = new JTableHandler();
    
    
    public FormCRUD() {
        initComponents();
        
        /*PENAMBAHAN 3*/
        txtKriteria.addKeyListener(this);
        
        /*PENAMBAHAN 4*/
        tableHandler.fillGrid(tblKaryawan,"");
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    //                           
    private void initComponents() {

        txtNik = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        txtNama = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        txtAlamat = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        tbnSimpan = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblKaryawan = new javax.swing.JTable();
        txtKriteria = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Nik");

        jLabel2.setText("Nama");

        jLabel3.setText("Alamat");

        tbnSimpan.setText("Simpan");
        tbnSimpan.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tbnSimpanActionPerformed(evt);
            }
        });

        tblKaryawan.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null}
            },
            new String [] {
                "NIK", "NAMA", "ALAMAT"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(tblKaryawan);

        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel4.setText("CARI(Berdasarkan Nama)");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(txtKriteria, javax.swing.GroupLayout.PREFERRED_SIZE, 305, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 452, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txtNik, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtAlamat, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtNama, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap())
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(tbnSimpan)
                        .addGap(18, 18, 18))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(34, 34, 34)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel1)
                            .addComponent(txtNik, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(3, 3, 3))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtKriteria, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel4))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(5, 5, 5)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel2))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel3)
                            .addComponent(txtAlamat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addComponent(tbnSimpan)
                        .addGap(0, 162, Short.MAX_VALUE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addContainerGap())
        );

        pack();
    }//                         

    private void tbnSimpanActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
             try {
            try {
                new SchemaBuilder().build();
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage());
            }

            Karyawan k = new Karyawan(txtNik.getText(), txtNama.getText(), txtAlamat.getText());
            SessionFactory sf = new Configuration().configure().buildSessionFactory();
            Session s = sf.openSession();
            s.beginTransaction();
            s.saveOrUpdate(k);
            s.getTransaction().commit();
            sf.close();
            JOptionPane.showMessageDialog(null, "tersimpan");
            /*PENAMBAHAN 5*/
            tableHandler.fillGrid(tblKaryawan,txtKriteria.getText());
            clearForm();
        } catch (HibernateException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }                                         

    void clearForm(){
        txtNik.setText("");
        txtNama.setText("");
        txtAlamat.setText("");
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(FormCRUD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(FormCRUD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(FormCRUD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(FormCRUD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FormCRUD().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable tblKaryawan;
    private javax.swing.JButton tbnSimpan;
    private javax.swing.JTextField txtAlamat;
    private javax.swing.JTextField txtKriteria;
    private javax.swing.JTextField txtNama;
    private javax.swing.JTextField txtNik;
    // End of variables declaration                   

    @Override
    public void keyTyped(KeyEvent e) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void keyPressed(KeyEvent e) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    
    /*PENAMBAHAN 6*/
    @Override
    public void keyReleased(KeyEvent e) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        Object source = e.getSource();
        int keyCode = e.getKeyCode();

        if (source.equals(txtKriteria)) {
            if ((keyCode >= 65 && keyCode <= 90)
                    || (keyCode >= 48 && keyCode <= 57)
                    || (keyCode == 8)) {
                tableHandler.fillGrid(tblKaryawan, txtKriteria.getText());
            }

        }
    }
}

       
 


Langkah 4 : Silahkan coba jalankan FormCRUD


Comments

Post a Comment

Popular posts from this blog

Installasi Oracle Instant Client

Untuk terkoneksi ke oracle database, sebuah client di harus kan terinstall oracle client. Tutorial kali ini saya akan membahas cara installasi Oracle Instant Client di windows. Ada beberapa tahapan yang akan dilakukan yaitu : 1.Installasi Oracle Instant Client. 2.Konfigurasi file  tnsnames.ora 3.Intallasi sqlplus (sqlplus di instal untuk mengecek konektivitas ke oracle database server). 4. Konfigurasi Environment Variable. 5.Test Koneksi ke Oracle Database Server. Tahap 1 : Installasi Oracle Instant Client.  - Download Oracle Instant Client ( instantclient-basic-nt-12.1.0.1.0.zip ) di  Oracle Instant Client  - Extract file yang telah di download, di direktori dimana anda akan menginstall oracle instant client,     dalam  contoh ini saya membuat folder baru di  C:\oracle dan saya extract file tersebut didalam direcktori     tersebut, sehingga terlihat seperti ini :   Tahap 2 : Konfigurasi file tnsnames.ora Buat...

BELAJAR JAVA UNTUK PEMULA : 1. Setup Software & Program Hello World

Halo teman-temen semoga kita semua sehat selalu, banyak rejeki & di mendapatkan ilmu yang bermanfaat amin… hehe, Jadi gini temen-temen saya berniat membuat artikel serial tentang “BELAJAR JAVA UNTUK PEMULA” dan adalah tulisan pertama yang akan membahas software apa saja sih yang perlu di install untuk membuat aplikasi java dan disini saya akan membuat program pertama yaitu menampilkan “Hello World” di layar Ok langsung aja, software apa saja sih yg perlu kita install untuk membuat aplikasi java, ada 2 temen-temen, IDE (integrated develpment Environment),IDE ini gunanya untuk ngetik kode program & menjalankan program java yang kita buat,  Untuk IDE java banyak pilihanya misal : NETBEANS , ECLIPSE dan lain-lain, tapi sebagai awal kita belajar kita pake text editor biasa saja dulu, kalo saya pake textmate, temen2 bisa pakai texteditor apa saja, bahkan pake notepad pun bisa, asal bisa dipake ngetik. JDK (Java Development Kit), Nah di dalam JDK itu sudah include...

Tutorial Hibernate Dengan Java Destop (SE) CRUD (PART 1: Insert)

Asalamualaikum. Pada artikel kali ini saya akan membahas penggunaan Hibernate untuk insert data ke database. Disisi User Interface saya menggunakan Java destop saja, sedangkan IDE saya menggunakan Netbeans. Berikut Sofware yang di butuhkan : -Database MySQL(saya menggunakan paket XAMPP) -Netbeans -JDK Jika belum ada silahkan di instal terlebih dahulu. Langkah 1. Siapkan Database Buat database dengan nama "hrd", dalam database tersebut buat tabel dengan nama karyawan, field dari tabel karyawan tersebut sebagai berikut : ------------------------------------------ #nik(PK)       varchar(50)   primary key   nama           varchar(50)   alamat         varchar(50) ------------------------------------------ Langkah 2. Buatlah Project Baru di Netbeans dengan nama CobaHibernate. Pilih Categories->Java, Project -> Java Application, seperti gambar di bawah, saya memberi nama project Langka...