MODUL 3 IMPLEMENTASI DAO
Teori Singkat DAO merupakan design pattern berkaitan dengan database access. DAO memisahkan persistence logic dari business atau presentation logic. DAO merupakan representasi fisik dan relasi antara object dari database. DAO design pattern diimplementasi dengan beberapa langkah, yaitu : -
Mendefinisikan interface DAO
-
Menulis implementasi dari interface DAO
-
Menuliskan business logic dari aplikasi untuk mengakses data source
Latihan 3 A. Database Disini kita akan menggunakan database MySQL. Ikuti langkah berikut 1.
Jalankan XAMPP Control Panel
2. Pastikan MySql pada komputer anda statusnya sudah running, apabila belum tekan tombol Start
Apabila statusnya tidak dapat berubah menjadi running, silahkan tanyakan ke Asisten
3. Buka netbeans anda 4. Pilih menu Window Services atau klik Services di dekat Projects, pastikan anda mendapatkan tampilan seperti berikut ini
5. Klik kanan pada Databases Register MySQL Server
6. Setelah muncul window berikut, pastikan isi dari textfield sama dengan gambar, beri tanda check pada Save Password
kemudian klik OK
7. Maka anda akan mendapatkan database baru pada Tree Databases anda seperti gambar berikut
8. Klik kanan seperti gambar kemudian pilih Connect
sesudah itu klik Refresh 9. Anda akan mendapatkan database pada Tree Databases anda, klik kanan seperti pada gambar kemudian pilih Create Database
10. Pada new Database name beri nama akademik kemudian OK
11. Anda akan mendapatkan node ke database yang baru saja anda buat
12. Pilih database akademik, klik kanan pada Tables kemudian pilih Create Table 13. Maka akan muncul window berikut
14. Pada Table name beri nama Mahasiswa 15. Klik Add column untuk menambahkan kolom
16. Atur agar tabel mahasiswa, kolom dan properti dari kolom sama dengan tabel dibawah ini Name
Type
Size
Primary Key
Unique
Null
nim nama kelas jurusan jenis_kelamin
char varchar char varchar bit
10 150 1 100
check uncheck uncheck uncheck uncheck
check uncheck uncheck uncheck uncheck
Uncheck Uncheck check check check
17. Apabila anda sudah menambahkan semua kolom, klik OK, maka anda akan mendapatkan tampilan sebagai berikut
18. Klik kanan pada tabel Mahasiswa View Data
19. Klik pada icon seperti gambar
20. Tambahkan seperti data di gambar
Apabila sudah maka klik OK
B. Aplikasi Pada latihan ini kita akan menggunakan latihan pada modul 2 untuk menggambarkan penggunaan konsep MVC dan konsep DAO. 1. Buka project latihan2 melalui File Open Project 2. Tambahkan paket dao yang merupakan subpaket dari paket latihan2
3. Buatlah 1 buah interface dengan nama DaoMahasiswa.java di paket dao
4. Tambahkan library JDBC MySQL untuk koneksi ke database MySQL, dengan cara klik kanan libraries Add Library
5. Apabila muncul tampilan berikut, klik Import
6. Silahkan anda cari MySQL JDBC Driver
kemudian klik Import Library 7. Setelah itu klik AddLibrary
8. Maka anda akan memiliki tampilan seperti berikut
9. Buatlah 1 buah kelas dengan nama DaoFactory.java di paket dao
10. Pada kelas DaoFactory.java, tambahkan kode program yang dicetak tebal, kode program tersebut adalah kode program yang digunakan untuk mengkonfigurasi koneksi. Kode program ini juga memastikan bahwa selama program berjalan hanya terdapat 1 buah koneksi ke database dan 1 buah objek daoFactory, tidak lebih. ☺
public class DaoFactory {
private static DaoFactory daoFactory; public static DaoFactory create() { if (daoFactory == null) { daoFactory = new DaoFactory(); } return daoFactory; } private Connection connection; private DaoFactory() { try { //tentukan driver jdbc yang digunakan Class.forName("com.mysql.jdbc.Driver"); //tentukan koneksi url yang digunakan String url = "jdbc:mysql://localhost:3306/akademik"; //buat objek koneksi connection = DriverManager.getConnection(url, "root", ""); } catch (SQLException ex) { Logger.getLogger(DaoFactory.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(DaoFactory.class.getName()).log(Level.SEVERE, null, ex); } } } 11. 12. Apabila anda sulit memahami kata – kata pada nomor 11 yang dicetak hijau, jangan anda hiraukan kode program yang dicetak hijau tersebut, yang perlu anda ingat dan paling penting adalah kode program yang tadi anda tulis itu akan membuat koneksi ke database MySQL dengan alamat server di localhost, port 3306, database akademik, user root dan password kosong. ☺
13. Tambahkan import berikut
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; 14. Pada kelas DaoMahasiswa, tambahkan kode program yang dicetak tebal
public interface DaoMahasiswa {
public int insertMahasiswa(Mhs mhs); public boolean deleteMahasiswa(Mhs mhs); public Mhs findById(String id); public boolean updateMahasiswa(Mhs mhs); public Mhs[] getAllMahasiswa(); } 15. Buatlah kelas pada paket dao dengan nama MahasiswaImpl 16. Tambahkan kode program yang dicetak tebal
public class MahasiswaImpl implements DaoMahasiswa { 17. Ketika muncul seperti gambar berikut, klik pada gambar yang dipanah kemudian pilih Implements all abstract methods
18. Tambahkan import berikut
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import latihan2.model.Mhs;
19. Tambahkan kode program yang ditebali
public class MahasiswaImpl implements DaoMahasiswa { private Connection c; protected MahasiswaImpl(Connection c) { this.c = c; } public int insertMahasiswa(Mhs mhs) { throw new UnsupportedOperationException("Not supported yet."); } public boolean deleteMahasiswa(Mhs mhs) { throw new UnsupportedOperationException("Not supported yet."); } public Mhs findById(String id) { throw new UnsupportedOperationException("Not supported yet."); } public boolean updateMahasiswa(Mhs mhs) { throw new UnsupportedOperationException("Not supported yet."); } public Mhs[] getAllMahasiswa() { throw new UnsupportedOperationException("Not supported yet."); } } 20. Cari method findById yang memiliki parameter id dengan tipe String, kemudian tambahkan kode program yang ditebali
public Mhs findById(String id) { Mhs mahasiswa = null; String sql = "select nim,nama,kelas,jurusan,jenis_kelamin from mahasiswa "; sql += " where nim='" + id + "'"; try { ResultSet rs = c.createStatement().executeQuery(sql); if (rs.next()) { mahasiswa = new Mhs(rs.getString("nim"), rs.getString("nama")); mahasiswa.setKelas(rs.getString("kelas")); mahasiswa.setJurusan(rs.getString("jurusan")); mahasiswa.setJenisKelamin(rs.getBoolean("jenis_kelamin")); } } catch (SQLException ex) { Logger.getLogger(MahasiswaImpl.class.getName()).log(Level.SEVERE, null, ex); } return mahasiswa; }
21. Cari method updateMahasiswa yang memiliki parameter mhs dengan tipe Mhs, kemudian tambahkan kode program yang ditebali
public boolean updateMahasiswa(Mhs mhs) { String sql = "update mahasiswa set "; sql += "nama='" + mhs.getNama() + "',kelas='" + mhs.getKelas() + "',"; sql += "jurusan='" + mhs.getJurusan() + "',"; if (mhs.getJenisKelamin()) { sql += "jenis_kelamin=1 "; } else { sql += "jenis_kelamin=0 "; } sql += "where nim='" + mhs.getNim() + "'"; try { c.createStatement().executeUpdate(sql); return true; } catch (SQLException ex) { Logger.getLogger(MahasiswaImpl.class.getName()).log(Level.SEVERE, null, ex); return false; } }
1.
Cari method getAllMahasiswa yang tidak memiliki parameter, kemudian tambahkan kode program yang ditebali
public Mhs[] getAllMahasiswa() { List<Mhs> lstMhs = new ArrayList<Mhs>(); String sql = "select nim,nama,kelas,jurusan,jenis_kelamin from mahasiswa "; try { ResultSet rs = c.createStatement().executeQuery(sql); while (rs.next()) { Mhs mahasiswa = new Mhs(rs.getString("nim"), rs.getString("nama")); mahasiswa.setKelas(rs.getString("kelas")); mahasiswa.setJurusan(rs.getString("jurusan")); mahasiswa.setJenisKelamin(rs.getBoolean("jenis_kelamin")); lstMhs.add(mahasiswa); } } catch (SQLException ex) { Logger.getLogger(MahasiswaImpl.class.getName()).log(Level.SEVERE, null, ex); } return lstMhs.toArray(new Mhs[lstMhs.size()]); }
2. Tambahkan kode program yang ditebali di kelas DaoFactory.java
private DaoFactory() { try { //tentukan driver jdbc yang digunakan Class.forName("com.mysql.jdbc.Driver"); //tentukan koneksi url yang digunakan String url = "jdbc:mysql://localhost:3306/akademik"; //buat objek koneksi connection = DriverManager.getConnection(url, "root", ""); } catch (SQLException ex) { Logger.getLogger(DaoFactory.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(DaoFactory.class.getName()).log(Level.SEVERE, null, ex); } } private MahasiswaImpl mahasiswaImpl; public MahasiswaImpl getMahasiswaDao() { if (mahasiswaImpl == null) { mahasiswaImpl = new MahasiswaImpl(connection); } return mahasiswaImpl; } }
3. Tambahkan kode program yang dicetak tebal pada FormMhs.java
public JTextField getTxtNim() { return txtNim; } public void refresh(Mhs mhs) { txtNim.setText(mhs.getNim()); txtNama.setText(mhs.getNama()); txtJurusan.setText(mhs.getJurusan()); txtKelas.setText(mhs.getKelas()); rbLakiLaki.setSelected(mhs.getJenisKelamin()); } } 4. Deklarasikan objek mahasiswaImpl menjadi field dari kelas MhsController.java
private MahasiswaImpl mahasiswaImpl;
5. Ubah agar konstruktor dari kelas MhsController.java anda sama dengan kode program berikut
public MhsController(FormDokumenMhs formDokumenMhs, FormMhs formMhs) { this.formDokumenMhs = formDokumenMhs; this.formMhs = formMhs; mahasiswaImpl = DaoFactory.create().getMahasiswaDao(); // mhs = new Mhs("10.10.1010", "Testing"); mhs = mahasiswaImpl.findById("10.10.1010"); formDokumenMhs.refresh(mhs); formMhs.refresh(mhs); } 6. Tambahkan kode program yang ditebali pada method updateMhs yang terdapat di kelas MhsController.java
public void updateMhs() { mhs.setNim(formMhs.getTxtNim().getText()); mhs.setNama(formMhs.getTxtNama().getText()); mhs.setJurusan(formMhs.getTxtJurusan().getText()); mhs.setJenisKelamin(formMhs.getRbLakiLaki().isSelected()); mhs.setKelas(formMhs.getTxtKelas().getText()); if (mahasiswaImpl.updateMahasiswa(mhs)) { formDokumenMhs.refresh(mhs); } }
7. Jalankan program anda, semoga tidak ada error ☺