Top Banner
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
14

MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

Mar 16, 2018

Download

Documents

trinhtuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

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

Page 2: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

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

Page 3: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

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

Page 4: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

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

Page 5: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

16. Atur agar tabel mahasiswa, kolom dan properti dari kolom sama dengan tabel dibawah

ini

Name Type Size Primary Key Unique Null

nim char 10 check check Uncheck

nama varchar 150 uncheck uncheck Uncheck

kelas char 1 uncheck uncheck check

jurusan varchar 100 uncheck uncheck check

jenis_kelamin bit uncheck uncheck 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

Page 6: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

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

Page 7: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

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

Page 8: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

6. Silahkan anda cari MySQL JDBC Driver

kemudian klik Import Library

7. Setelah itu klik AddLibrary

8. Maka anda akan memiliki tampilan seperti berikut

Page 9: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

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

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

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);

}

}

}

Page 10: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

13. Tambahkan import berikut

14. Pada kelas DaoMahasiswa, tambahkan kode program yang dicetak tebal

15. Buatlah kelas pada paket dao dengan nama MahasiswaImpl

16. Tambahkan kode program yang dicetak tebal

17. Ketika muncul seperti gambar berikut, klik pada gambar yang dipanah kemudian pilih Implements all abstract methods

18. Tambahkan import berikut

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(); }

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.logging.Level;

import java.util.logging.Logger;

public class MahasiswaImpl implements DaoMahasiswa {

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;

Page 11: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

19. Tambahkan kode program yang ditebali

20. Cari method findById yang memiliki parameter id dengan tipe String, kemudian 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.");

}

}

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;

}

Page 12: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

21. Cari method updateMahasiswa yang memiliki parameter mhs dengan tipe Mhs,

kemudian tambahkan kode program yang ditebali

1. Cari method getAllMahasiswa yang tidak memiliki parameter, 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;

}

}

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()]);

}

Page 13: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

2. Tambahkan kode program yang ditebali di kelas DaoFactory.java

3. Tambahkan kode program yang dicetak tebal pada FormMhs.java

4. Deklarasikan objek mahasiswaImpl menjadi field dari kelas MhsController.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;

}

}

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());

}

}

private MahasiswaImpl mahasiswaImpl;

Page 14: MODUL 3 IMPLEMENTASI DAO Teori Singkatelearning.amikom.ac.id/index.php/download/materi/190302158-DT068-5...Implements all abstract methods 18. Tambahkan import berikut ... public class

5. Ubah agar konstruktor dari kelas MhsController.java anda sama dengan kode program

berikut

6. Tambahkan kode program yang ditebali pada method updateMhs yang terdapat di

kelas MhsController.java

7. Jalankan program anda, semoga tidak ada error ☺

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);

}

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);

}

}