Upload
trinhtuong
View
227
Download
4
Embed Size (px)
Citation preview
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 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
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. ☺
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);
}
}
}
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;
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;
}
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()]);
}
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;
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);
}
}