Skip to main content

Tutorial Hibernate Dengan Java Destop (SE) CRUD (PART 3: Update)

Asalamualaikum, ini adalah artikel lanjutan dari Artikel Sebelumnya, sehingga di butuhkan project di dari artikel sebelum nya.
Artikel kali ini akan membahas update data dengan hibernate, tidak banyak yang akan di modifikasi dari project sebelum nya, kita cukup modifikasi file FormCRUD.java pada artikel sebelumnya.

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 java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
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 MouseListener*/
public class FormCRUD extends javax.swing.JFrame implements  KeyListener,MouseListener{

    /**
     * Creates new form FormCRUD
     */
     
    private  JTableHandler tableHandler = new JTableHandler();
    
    
    public FormCRUD() {
        initComponents();
        
        txtKriteria.addKeyListener(this);
        tableHandler.fillGrid(tblKaryawan,"");
        
        /*PENAMBAHAN 2*/
        tblKaryawan.addMouseListener(this);
    }

    /**
     * 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, 38, 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)))
                    .addComponent(tbnSimpan, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );
        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");
            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.
    }
    
    @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());
            }

        }
    }
    
    
    /*PENAMBAHAN 3*/
    @Override
    public void mouseClicked(MouseEvent e) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        txtNik.setText(tblKaryawan.getValueAt(tblKaryawan.getSelectedRow(), 0).toString());
        txtNama.setText(tblKaryawan.getValueAt(tblKaryawan.getSelectedRow(), 1).toString());
        txtAlamat.setText(tblKaryawan.getValueAt(tblKaryawan.getSelectedRow(), 2).toString());
    }

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

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

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

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

       
 
Penjelasan Perubahan Kode :

Modifikasi 1. Mengimplement MouseListener

                                              /*PENAMBAHAN 1 : Implemet MouseListener*/
public class FormCRUD extends javax.swing.JFrame implements  KeyListener,MouseListener{

    /**
     * Creates new form FormCRUD
     */
       
 

Modifikasi 2. Menambahkan MouseListener ke tblKaryawan (JTable)
     public FormCRUD() {
        initComponents();
        
        txtKriteria.addKeyListener(this);
        tableHandler.fillGrid(tblKaryawan,"");
        
        /*PENAMBAHAN 2*/
        tblKaryawan.addMouseListener(this);
    }

Modifikasi 3. Meng-overide method mouseClicked
    /*PENAMBAHAN 3*/
    @Override
    public void mouseClicked(MouseEvent e) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        txtNik.setText(tblKaryawan.getValueAt(tblKaryawan.getSelectedRow(), 0).toString());
        txtNama.setText(tblKaryawan.getValueAt(tblKaryawan.getSelectedRow(), 1).toString());
        txtAlamat.setText(tblKaryawan.getValueAt(tblKaryawan.getSelectedRow(), 2).toString());
    }

Karena pada artikel sebelumnya, pada tombol simpan  telah digunakan method saveOrUpdate() untuk menyimpan data, maka tidak akan ada modifikasi lagi di bagian tersebut.

       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");
            tableHandler.fillGrid(tblKaryawan,txtKriteria.getText());
            clearForm();
        } catch (HibernateException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }  
       
 

Coba lakukan uji program.

Comments

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...