Data Access Object Pada Pengembangan Apl

Data Access Object
Pada Pengembangan Aplikasi Web Berorientasi Objek
Menggunakan Bahasa Pemrograman Java
Muhamad Mulya Fuadi Agisna1, Bagus Dwi Sandi Putra2
1

116102113, 2116101102
Sistem Informasi, Institut Teknologi Telkom
Jl. Telekomunikasi No. 1 Terusan Buah Batu, Bandung 40257
1
contoy.coboy@gmail.com, 2sandiputra19@gmail.com

ABSTRAK

ABSTRACT

Salah satu sumber informasi yang dapat diakses
secara online dan realtime adalah web. Aplikasi web
sangat membantu kegiatan masyarakat. Dengan
arsitektur client-server, kini aplikasi web mampu
menyajikan informasi yang dinamis.

Informasi yang dinamis tersebut diambil dengan
melakukan koneksi ke database. Untuk melakukannya,
developer sebaiknya membuat kelas koneksi tersendiri
yang terpisah dari kelas business logic. Kelas koneksi
tersebut disebut juga Data Access Object (DAO).
DAO mampu memberikan portabilitas bagi
aplikasi untuk berpindah ke berbagai jenis database
engine yang digunakan. Pada paper ini akan dibahas
mengenai DAO. Pembahasan yang dilakukan bersifat
studi literatur dari berbagai literatur akademik yang
berkaitan.
Kata kunci : Data Access Object, DAO, database
engine, portabilitas.

One source of information that can be accessed
online and realtime is web. The web application is
very helpful for people’s activities. With a clientserver architecture, web applications are now able to
present dynamic information.
Dynamic information is retrieved by connecting to
the database. To do so, the developers should make its

own connection class separate from business logic
class. Class connection is called the Data Access
Object (DAO).
DAO is able to provide portability for applications
to move to different types of database engine that is
used. This paper will discuss the DAO. The discussion
is conducted literature study of related academic
literature.
Keywords : Data Access Object, DAO, database
engine, portability.

I. PENDAHULUAN

untuk koneksi ke database. Penerapan dari pemaparan
di atas dalam ilmu komputer dikenal sebagai Data
Access Object (DAO).

Web merupakan salah satu sumber informasi yang
banyak digunakan oleh masyarakat. Salah satu produk
yang membantu kegiatan dan pekerjaan secara online

dan realtime adalah suatu aplikasi web. Aplikasi
tersebut dibuat dengan tujuan agar pemakai dapat
berinteraksi dengan penyedia informasi secara mudah
dan cepat.
Aplikasi web kini tidak terbatas lagi hanya sebagai
penyedia informasi yang statis. Dengan adanya
arsitektur client-server, aplikasi web juga mampu
memberikan informasi yang dinamis, dengan cara
melakukan koneksi terhadap database.
Seorang developer web akan mengalami kesulitan
jika harus membangun kode-kode program dalam
setiap kelas business logic untuk koneksi aplikasi web
yang dibuat ke database. Untuk mengatasi hal
tersebut, maka dibuatlah suatu kelas tertentu untuk
pengaksesan koneksi ke database.
Hal ini memudahkan developer sehingga tidak
perlu membuat kode program yang bermacam-macam

II. DATA ACCESS OBJECT
DAO adalah suatu objek yang menyediakan

sebuah interface yang abstrak untuk tipe-tipe database
tertentu. Dengan DAO, developer melakukan koneksi
tidak secara langsung ke database melainkan terpisah
pada kode program tersendiri. Sehingga DAO mampu
memberikan portabilitas bagi aplikasi untuk dapat
berpindah dari satu database ke database lain tanpa
harus mengganti kode program pada business logic.
Fungsi dari DAO dapat dijelaskan secara lengkap
sebagai berikut :
1. DAO dapat digunakan untuk aplikasi yang
cukup besar (misalnya skala enterprise) yang
mana penyimpanan data pasti dibutuhkan.
2. DAO digunakan untuk memperoleh data dari
database dalam kelas model, mengupdate

3.

4.

database dari kelas model yang dimodifikasi,

atau menghapus records dalam database.
DAO menyembunyikan semua detail
penyimpanan data dari keseluruhan business
logic di dalam aplikasi.
DAO bertindak sebagai perantara aplikasi dan
database.
DAO
memindahkan
dan
mengembalikan data di antara objek dan
database records.

Dalam membuat DAO, seorang developer harus
mempertimbangkan apakah kelas yang dibuat berupa
singleton atau tidak. Bahasa Object Oriented
Programming (OOP) mengunggulkan konsep
pewarisan (inheritance) suatu kelas sebagai cara
utama untuk memperluas fungsionalitasnya. Singleton
secara efektif dapat mencegah konsep pewarisan
tersebut.

DAO dibuat menjadi singleton ketika developer
tidak ingin terjadi multiple instances dari kelas DAO.
Jika developer ingin mendesain suatu single-user
application dan tidak menghiraukan akses konkuren,
DAO singleton sangat cocok dan mudah untuk
diimplementasikan. Jika terdapat beberapa user
dengan
akses
konkuren,
developer
dapat
menggunakan konsep DAO thread-safe singleton.
Pada DAO singleton, developer harus memastikan
bahwa setiap method di dalamnya bersifat atomik dan
tidak menampung state pada setiap pemanggilannya.
Hal yang mencirikan bahwa suatu DAO singleton
adalah hanya ada satu instansiasi (satu objek) yang
dibuat dari kelasnya. Contoh kode program yang
mencirikannya adalah sebagai berikut :
private

null;

static

SampleDAO

instance

=

public static SampleDAO getInstance(){
if (instance == null) {
try { instance = new
SampleDAO(); }
catch (Exception e) {
e.printStackTrace(); }
}
return instance;

III.


DEFINISI PADA DAO DAN
JDBC DRIVER

Seperti yang telah dijelaskan pada bagian
pendahuluan, developer cukup membuat satu kelas
koneksi. Namun, jika digunakan database engine yang
berbeda, tetap perlu ada definisi pada beberapa baris

yang menunjukkan database engine yang digunakan
tanpa merombak keseluruhan kode program.
Jika database engine yang digunakan adalah
Microsoft SQL Server 2008, beberapa definisi yang
harus ditulis adalah sebagai berikut :
1. Database url
private static final String
databaseurl=”jdbc:microsoft:sqlserver
://localhost:1433;SelectMethod=Cursor
;DatabaseName=namaDatabase”;


Keterangan:
a. Bisa ganti localhost dengan IP beserta
portnya yang sesuai dengan konfigurasi
pada SQL Server Configuration Manager.
b. Ganti DatabaseName sesuai dengan
nama database yang digunakan.
2.

Class.forName("com.microsoft.j
dbc.sqlserver.SQLServerDriver"
).newInstance();
public SampleDAO() throws Exception{
try{
Class.forName("com.micr
osoft.jdbc.sqlserver.SQ
LServerDriver").newInst
ance();
} catch (Exception e){
System.out.println("err
or class name");

throw new Exception();
}
try{
connect();
} catch(SQLException e ){
System.out.println("con
nection error");
e.printStackTrace();
throw new Exception();
}
}

Driver yang diperlukan untuk dimasukkan ke
dalam
project
aplikasi
adalah
sqljdbc_4.0.2206.100_enu.exe (Microsoft JDBC
Driver 4.0 for SQL Server).
Jika database engine yang digunakan adalah

Oracle 11g, beberapa definisi yang harus ditulis adalah
sebagai berikut :
1. Database url
private static final String
databaseurl=”jdbc:oracle:thin:@localh
ost:1521:namaDatabase”;

Keterangan:
a. Bisa ganti localhost dengan IP beserta
portnya yang sesuai dengan konfigurasi
pada Oracle 11g Enterprise Manager.
b. Ganti namaDatabase sesuai dengan
nama database yang digunakan.
2. Class.forName("oracle.jdbc.dri
ver.OracleDriver").newInstance
();
public SampleDAO() throws Exception{
try{

Class.forName("oracle
.jdbc.driver.OracleDr
iver").newInstance();
} catch (Exception e){
System.out.println("err
or class name");
throw new Exception();
}
try{
connect();
} catch(SQLException e ){
System.out.println("con
nection error");
e.printStackTrace();
throw new Exception();
}
}

Driver yang diperlukan untuk dimasukkan ke
dalam project aplikasi adalah ojdbc5.jar (Classes for
use with JDK 1.5. It contains the JDBC driver classes,
except classes for NLS support in Oracle Object and
Collection types).

IV.

METHOD GET DAN RELEASE
CONNECTION

Seperti yang telah dijelaskan pada bab
sebelumnya, DAO singleton hanya akan ada satu
objek yang diinstansiasi. Sehingga setiap kali
pemanggilan objek harus terjadi secara sinkronis.
Kode program pada DAO terdapat method
getConnection()
dan
releaseConnection() yang dispesifikasikan
dengan kata kunci synchronized, sebagai
berikut :

private synchronized Connection
getConnection () {
while(!conIsFree) {
try{
wait();
}catch(InterruptedExcep
tion e){}
}
conIsFree = false;
notify();
return con;
}
private synchronized void
releaseConnection() {
while(conIsFree){
try{
wait();
}catch(InterruptedExcep
tion e){}
}
conIsFree = true;
notify();
}

Method getConnection() digunakan untuk
mendapatkan koneksi ke database selama periode
waktu tertentu. Setelah akses ke database selesai,
maka dilakukan pelepasan koneksi dengan
pemanggilan method releaseConnection().
Setiap objek dan kelas pada Java memiliki monitor
(pemantau) yang terasosiasi pada objek dan kelas
tersebut. Monitor gampangnya adalah suatu pengunci
yang menyambungkan akses ke suatu objek atau kelas.
Untuk memperoleh akses tersebut, suatu thread
membutuhkan suatu monitor, kemudian dijalankan.
Hal ini terjadi secara otomatis ketika developer
membuat suatu method synchronized.
Untuk memperoleh akses ke monitor secara
eksplisit, thread memanggil method synchronized
di dalam objek itu sendiri. Untuk melepas monitor
secara temporer, thread memanggil fungsi wait().
Penggunaan wait() dengan cara ini memungkinkan
thread secara bergantian mengakses monitor pada titik
sinkronisasi tertentu.
Ketika hanya ada dua thread pada kode program,
fungsi notify() digunakan untuk memberitahu
thread lain untuk berjalan.

V. METHOD EXECUTE SELECT
QUERY
Pada
method
executeSelectQuery()
digunakan kata kunci, yaitu ResultSet. Suatu objek
ResultSet menentukan penunjukkan kursor pada
baris data yang sedang dipilih. Secara default, objek

ResultSet tidak bisa di-update dan hanya dapat
bergerak ke depan saja.
Kelas interface dari ResultSet menyediakan
method getter seperti getBoolean, getLong, dsb.
untuk mengambil nilai kolom pada baris yang sedang
ditunjuk.
Kode
program
dari
method
executeSelectQuery dapat dilihat seperti di
bawah ini.
public ResultSet
executeSelectQuery(String query)
throws SQLException{
getConnection();
boolean ok = true;
ResultSet rs = null;
try{
//boolean oldCommitMode
= con.getAutoCommit();
//con.setAutoCommit(fal
se);
Statement statement =
con.createStatement();
rs =
statement.executeQuery(
query);
con.commit();
}
catch(Exception e){
ok = false;
}
finally{
releaseConnection();
}
if(!ok){
throw new
SQLException();
}
return rs;
}

Algoritma di atas menunjukkan bahwa
program memanggil method getConnection()
untuk mendapatkan koneksi ke database. Pada kode
program di atas terdapat sebuah objek Statement.
Objek Statement dapat digunakan untuk
mengirimkan SQL Query ke database dengan
menggunakan statement.executeQuery(query)
dengan objek pengembalian bertipe ResultSet.
Setelah itu, program akan melepas koneksi dengan
memanggil method releaseConnection().
Objek ResultSet dikembalikan karena seperti pada
penjelasan di atas, objek tersebut menampung nilai
kolom yang telah diambil.

VI.

METHOD EXECUTE UPDATE
QUERY

Kode
program
dari
method
executeUpdateQuery dapat dilihat seperti di
bawah ini.
public boolean
executeUpdateQuery(String[] sqls){
boolean returnValue = true;
getConnection();
boolean oldCommitMode = false;
boolean commitModeChecked =
false;
try{
oldCommitMode =
con.getAutoCommit();
commitModeChecked =
true;
con.setAutoCommit(false
);
Statement statment =
con.createStatement();
for(int i=0;
i

Dokumen yang terkait

FREKUENSI KEMUNCULAN TOKOH KARAKTER ANTAGONIS DAN PROTAGONIS PADA SINETRON (Analisis Isi Pada Sinetron Munajah Cinta di RCTI dan Sinetron Cinta Fitri di SCTV)

27 310 2

PENILAIAN MASYARAKAT TENTANG FILM LASKAR PELANGI Studi Pada Penonton Film Laskar Pelangi Di Studio 21 Malang Town Squere

17 165 2

APRESIASI IBU RUMAH TANGGA TERHADAP TAYANGAN CERIWIS DI TRANS TV (Studi Pada Ibu Rumah Tangga RW 6 Kelurahan Lemah Putro Sidoarjo)

8 209 2

MOTIF MAHASISWA BANYUMASAN MENYAKSIKAN TAYANGAN POJOK KAMPUNG DI JAWA POS TELEVISI (JTV)Studi Pada Anggota Paguyuban Mahasiswa Banyumasan di Malang

20 244 2

FENOMENA INDUSTRI JASA (JASA SEKS) TERHADAP PERUBAHAN PERILAKU SOSIAL ( Study Pada Masyarakat Gang Dolly Surabaya)

63 375 2

PEMAKNAAN MAHASISWA TENTANG DAKWAH USTADZ FELIX SIAUW MELALUI TWITTER ( Studi Resepsi Pada Mahasiswa Jurusan Tarbiyah Universitas Muhammadiyah Malang Angkatan 2011)

59 326 21

PENGARUH PENGGUNAAN BLACKBERRY MESSENGER TERHADAP PERUBAHAN PERILAKU MAHASISWA DALAM INTERAKSI SOSIAL (Studi Pada Mahasiswa Jurusan Ilmu Komunikasi Angkatan 2008 Universitas Muhammadiyah Malang)

127 505 26

PEMAKNAAN BERITA PERKEMBANGAN KOMODITI BERJANGKA PADA PROGRAM ACARA KABAR PASAR DI TV ONE (Analisis Resepsi Pada Karyawan PT Victory International Futures Malang)

18 209 45

STRATEGI PUBLIC RELATIONS DALAM MENANGANI KELUHAN PELANGGAN SPEEDY ( Studi Pada Public Relations PT Telkom Madiun)

32 284 52

Analisis Penyerapan Tenaga Kerja Pada Industri Kerajinan Tangan Di Desa Tutul Kecamatan Balung Kabupaten Jember.

7 76 65