0% menganggap dokumen ini bermanfaat (0 suara)
106 tayangan77 halaman

Modul PBO Java Untuk Pemula Aswian Editri S PDF

1. Persiapan pemrograman Java memerlukan instalasi JDK dan IDE seperti Eclipse atau Netbeans. JDK diperlukan untuk mengembangkan aplikasi Java sedangkan IDE menyediakan fasilitas untuk pengembangan perangkat lunak. 2. Setelah instalasi perangkat lunak, membuat project baru dan class pertama bernama "Halo Java" di Eclipse. 3. Dokumen ini menjelaskan tentang konsep Class dan Object di Java beserta sintaks dasar seperti

Diunggah oleh

ArRief
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai TXT, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
106 tayangan77 halaman

Modul PBO Java Untuk Pemula Aswian Editri S PDF

1. Persiapan pemrograman Java memerlukan instalasi JDK dan IDE seperti Eclipse atau Netbeans. JDK diperlukan untuk mengembangkan aplikasi Java sedangkan IDE menyediakan fasilitas untuk pengembangan perangkat lunak. 2. Setelah instalasi perangkat lunak, membuat project baru dan class pertama bernama "Halo Java" di Eclipse. 3. Dokumen ini menjelaskan tentang konsep Class dan Object di Java beserta sintaks dasar seperti

Diunggah oleh

ArRief
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai TXT, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 77

Daftar Isi

1Persiapan Pemrograman Java.....................................................


...................................................4 1.1Instalasi Software Pendu
kung............................................................................
....................4 1.1.1Instalasi JDK........................................
..........................................................................4 1.1.
2Instalasi Eclipse..............................................................
................................................5 1.2Memulai Eclipse............
................................................................................
........................5 1.3Membuat Project Java dalam Eclipse.................
...................................................................5 1.4Membuat
Class 'Halo Java'...............................................................
.....................................6 1.5Menjalankan Program Java dari Eclipse.
...............................................................................9
1.6Aturan penamaan dalam Bahasa Pemrograman Java...............................
............................10 1.7Latihan.......................................
................................................................................
...........11 2Class dan Objects................................................
.........................................................................12 2.1K
onsep...........................................................................
......................................................12 2.2Deklarasi Class pada
Java...........................................................................
.........................13 2.3Deklarasi dan Instansiasi Object pada Java.......
..................................................................13 2.4Mengakse
s state dan behavior object.....................................................
..............................14 2.5Latihan.....................................
................................................................................
............14 3Syntax Dasar....................................................
............................................................................15 3
.1Variabel......................................................................
..........................................................15 3.1.1Deklarasi vari
abel............................................................................
.............................15 3.1.2Tipe Data Variabel.........................
...............................................................................1
5 3.1.3Inisialisasi Variabel....................................................
...................................................16 3.1.4Variabel Instance, Cl
ass dan Lokal...................................................................
............16 3.2Modifier......................................................
.........................................................................17 3.3M
ethod...........................................................................
......................................................19 3.4Operator............
................................................................................
...................................20 3.4.1Operator aritmatik pada Java.........
...............................................................................2
0 3.4.2Operator relasional pada Java............................................
...........................................20 3.4.3Operator logika pada Java....
................................................................................
........21 3.5Conditional (if & switch).........................................
............................................................21 3.5.1Statement if
................................................................................
...................................21 3.5.2Statement switch.....................
................................................................................
......22 3.6Loop (perulangan)...................................................
.............................................................22 3.6.1Perintah wh
ile.............................................................................
..................................22 3.6.2Perintah for..........................
................................................................................
.........23 3.7Accessor dan Mutator (Getter & Setter)...........................
...................................................23 3.8Latihan................
................................................................................

.................................24 4Struktur Data Array dan Collection.........


................................................................................
....26 4.1Array.................................................................
...................................................................26 4.2Collect
ion.............................................................................
................................................27 4.3Latihan...................
................................................................................
..............................28 5Tutorial Akses Database dengan JDBC...........
............................................................................30 5
.1Persiapan lingkungan pemrograman..............................................
......................................30 5.1.1Instalasi Database Server (MySQL).
............................................................................30 5
.1.2Menyiapkan JDBC driver untuk MySQL..........................................
..........................30 5.1.3Inisiasi database dan tabel...................
.........................................................................30 5.2P
emrograman......................................................................
.................................................30 5.2.1Class Koneksi..........
................................................................................
.....................30 5.2.2Class Entitas......................................
...........................................................................30 5.
2.3Class Data Access Object (DAO)...............................................
..................................30 6Tutorial Desktop Application dengan Java G
UI (Swing)............................................................31 7Tutori
al Web Application dengan Vaadin................................................
....................................32

8Tutorial Mobile Application (Android) .........................................


.............................................33

1
1.1
Persiapan Pemrograman Java
Instalasi Software Pendukung
Untuk dapat memulai pemrograman dengan bahasa Java, dua software yang pertama ka
li harus disiapkan adalah Java Development Kit (JDK) dan sebuah Integrated Devel
opment Environment (IDE) yang mendukung bahasa pemrograman Java. JDK memungkinka
n pengembangan aplikasi berbasis Java baik untuk desktop , server maupun embedde
d application. JDK dapat didownload gratis pada situs oracle.com sebagai pemilik
lisensi bahasa pemrograman Java.
Gambar 1: Logo Java IDE adalah software yang menyediakan fasilitas komprehensif
yang memfasilitasi programmer dalam melakukan pengembangan software. Sebuah IDE
dilengkapi dengan fasilitas source code editor, build automation dan debugger. J
ava memiliki banyak pilihan IDE yang tersedia secara gratis di Internet. Dua yan
g paling populer diantaranya adalah Eclipse dan Netbeans. Dalam modul ini IDE ya
ng digunakan adalah Eclipse, IDE ini tersedia secara gratis pada alamat http://w
ww.eclipse.org/downloads/
Gambar 2: Logo Eclipse
1.1.1
Instalasi JDK
Instalasi JDK cukup dilakukan dengan mengikuti instruksi pada layar setelah file
instalasi diklik. Anda dapat mencek apakah komputer anda sebelumnya telah terin
stall java atau tidak dengan menjalankan perintah java -version pada command lin
e.

1.1.2
Instalasi Eclipse
Untuk sistem operasi windows file instalasi eclipse yang telah didownload biasan
ya tersedia dalam bentuk yang telah terkompresi. Cukup extract file tersebut pad
a folder yang anda inginkan misalkan C:\Eclipse dan anda sudah siap menggunakan
IDE eclipse.
1.2
Memulai Eclipse
Jalankan eclipse dengan mengklik dua kali aplikasi Eclipse.exe (windows). Jika i
ni adalah kali pertama anda menjalankan eclipse, akan ada pertanyaan dimana anda
akan menyimpan pekerjaan anda (workspace), pilih lokasi yang anda inginkan misa
lkan (c:\eclipse-workspace) dan checklist pilihan untuk menjadikan lokasi ini se
bagai lokasi default.
Gambar 3: Tampilan utama Eclipse IDE Biasakan diri anda dengan tampilan utama Ec
lipse, perhatikan area-area utama seperti menu dan tool bar, package explorer, o
utline, problems dan console.
1.3
Membuat Project Java dalam Eclipse
Langkah selanjutnya adalah membuat project aplikasi java baru menggunakan eclips
e. Pilih 'File New Project' pada eclipse kemudian pilih 'Java Project'. Jika seb
elumnya anda pernah mengakses 'Java Project' dari menu 'File', pilihan tersebut
selanjutnya akan muncul langsung tanpa perlu mengakses kempok menu 'Project' sep
erti pada screenshot dibawah.

Gambar 4: Membuat project baru Pada layar selanjutnya anda akan diminta memberik
an nama pada project yang akan anda buat. Isi nama project dengan nama yang anda
inginkan kemudian klik 'Finish'.
Gambar 5: Memberi nama project
1.4
Membuat Class 'Halo Java'
Setelah membuat project pertama, lanjutkan dengan membuat class. Klik kanan Proj
ect yang

sudah anda buat pada 'Package Explorer', pilih 'New' kemudian 'Class' seperti di
tunjukkan pada screesnhot di bawah ini.
Gam bar 6: Membuat class baru Langkah selanjutnya adalah memberi nama pada class
yang anda buat. Aturan yang harus diikuti pada penamaan class adalah nama Class
harus diawali dengan huruf besar dan tanpa spasi. Dianjurkan menggunakan huruf
besar setiap memulai awal kata untuk class yang terdiri atas dua kata atau lebih
. Pada contoh dibawah, nama class yang kita buat adalah 'HaloJava'

Gambar 7: Penamaan Class Perhatikan bahwa pada contoh kita memilih untuk agar 'm
ethod stub' 'public static void main(String[] args)' untuk disertakan oleh eclip
se secara otomatis. Method ini adalah method yang pertama kali dipanggil saat se
buah program Java dijalankan. Dengan kata lain, method ini harus tersedia pada c
lass yang akan dipanggil pertama kali saat program yang kita buat dijalankan. Se
telah pengisian selesai, klik pada tombol 'Finish' dan di layar utama akan terli
hat tampilan seperti screenshot dibawah ini.
Gambar 8: Kode program pada class HaloJava

1.5
Menjalankan Program Java dari Eclipse
Setelah berhasil membuat class pertama, selanjutnya anda dapat mencoba menjalank
an program sederhana yang masih berisi satu class Java. Sebelumnya, tambahkan ba
ris System.out.println("Halo Java!Ini adalah program pertamaku"); seperti pada s
creenshot di dalam method main(String[] args) yang ada pada class anda. Baris pr
ogram yang ditambahkan berisi perintah untuk menampilkan tulisan di dalam tanda
kutip pada console. Perhatikan agar huruf besar/kecil dan tanda baca identik den
gan contoh, tulisan yang diapit tanda kutip dapat anda modifikasi sesuai keingin
an anda.
Gambar 9: Menampilkan tulisan pada console
Kemudian klik kanan pada class anda dan pilih 'Run as' 'Java Application'. Jika
anda melakukannya dengan benar, pada console akan muncul tulisan seperti pada sc
reenshot berikut.
Gambar 10: Output pada console saat program dijalankan

1.6 1.7 1.8


Struktur Program Java Sederhana Membiasakan Diri Menggunakan Eclipse Aturan pena
maan dalam Bahasa Pemrograman Java
Dalam pemrograman Java terdapat beberapa aturan penamaan yang harus diketahui pr
ogrammer sebelum memulai menulis programnya. Dengan menaati aturan ini, akan mem
buat program menjadi lebih mudah dipahami ( readability) baik oleh programmer ya
ng menuliskannya atau programmer lain yang suatu saat membaca program yang ia bu
at:
Pemrograman Java Case-Sensitive, artinya memperhatikan besar kecil huruf yan
g digunakan, kode 'Mahasiswa' dan 'mahasiswa' akan merujuk kepada dua hal yang b
erbeda. Nama package untuk class ditulis dengan huruf kecil (lowercase) dan diis
i dengan alamat domain organisasi tempat programmer bernaung. Hal ini untuk meng
hindari adanya bentrok nama Class bila programmer menggunakan library dari berba
gai tempat. Contoh penamaan:
package com.betokngoncer.gamedengklak package org.s
tth.siakademik

Nama class harus dimulai dengan huruf besar, jika terdiri atas lebih dari satu k
ata, maka setiap awal kata dimulai dengan huruf besar. Tata cara penulisan ini d
isebut juga Camel Case. Contoh penamaan :
class Mahasiswa class MataKuliah

Nama interface juga menggunakan Camel Case namun biasanya dengan diselipkan huru
f I besar pada awal nama. Contoh:
interface IComparable interface IEnumerable

Nama method dan variabel harus dimulai dengan huruf kecil. Jika variabel atau me
thod terdiri atas lebih dari maka setiap awal kata dimulai dengan huruf besar,.
Tata cara penulisan ini juga dikenal dengan nama Mixed Case. Contoh
int nilaiUji
an char nilaiAkhir

String getNim() void setAlamat()


Konstanta ditulis menggunakan huruf besar (uppercase). Contoh
e PI=3.14;

static final doubl

1.9
Latihan
Buatlah sebuah project java baru menggunakan eclipse dan beri nama 'Latihan Java
' Buatlah sebuah class dengan nama 'ProgramKecilKu'. Lengkapi class tersebut den
gan method yang diperlukan agar dapat dijalankan sebagai sebuah aplikasi Java. I
si method tersebut agar saat dijalankan ia menampilkan tulisan Jika tulisan ini t
ampil di console, maka aku telah lulus bab pertama modul belajar Java

2
2.1
Class dan Objects pada Java
Konsep
Konsep dasar dari pemrograman berorientasi objek adalah konsep Class and Object.
Object/Objek memiliki state dan behaviors. State atau juga sering disebut atrib
ut/property/field adalah data yang melekat dan membentuk identitas suatu objek.
Behavior adalah representasi perilaku objek bersangkutan. Class adalah cara pand
ang terhadap klasifikasi/tipe dari objek. Class merepresentasikan struktur objek
(state dan behavior) yang menjadi anggota dari class tertentu. Class dapat juga
disebut sebagai blueprint dari sebuah objek . Tabel berikut berisi contoh class
beserta state dan behaviornya.
Tabel berikut berisi contoh objek dari class Mahasiswa

2.2
Deklarasi Class pada Java
Berikut adalah contoh sebuah class yang diimplementasikan dalam baris kode progr
am Java. Dalam pemrograman berbahasa Java state diterjemahkan menjadi variabel s
edangkan behavior diterjemahkan menjadi method. Pada contoh tersebut class Mahas
iswa memiliki variabel nama, nim, jurusan, dan thnMasuk. Class Mahasiswa tersebu
t juga dilengkapi dengan method lulus() serta method tampilkanDataMahasiswa() un
tuk menampilkan nama, nim dan jurusan pada console.
public class Mahasiswa { String nama; String nim; String jurusan; int thnMasuk;
//Konstruktor public Mahasiswa(){ } public Mahasiswa(String nama, String nim) {
super(); this.nama = nama; this.nim = nim; } void lulus(){ } void tampilkanDataM
ahasiswa(){ System.out.println(nama); System.out.println(nim); System.out.printl
n(jurusan); } }
2.3
Constructor
?
public Mahasiswa(){ }
Pertanyaan pengantar: Jika Class merupakan blueprint sebuah object, bagaimana se
buah object dapat dibuat menggunakan blueprint tersebut?
Object pada Java merupakan instansiasi dari sebuah class. Sebuah objek dapat dib
uat dengan memanggil constructor kelas tersebut. Setiap class dapat memiliki leb
ih dari satu jenis constructor. Pada contoh kode class Mahasiswa sebelumnya, ter
dapat dua constructor yakni :

public Mahasiswa(String nama, String nim) { super(); this.nama = nama; this.nim


= nim; } Berdasarkan dua constructor tersebut objek mahasiswa dapat dibuat denga
n dua cara seperti contoh dibawah yakni menggunakan constructor tanpa parameter
(siswa1) dan menggunakan parameter nama dan nim (siswa2). Pada contoh class Utam
a dibawah siswa1 dan siswa2 merupakan object dari class Mahasiswa. Dua object te
rsebut kemudian diinstansiasi dengan menggunakan constructor yang berbeda. Objec
t siswa1 diinstansiasi dengan constructor pertama sedangkan object siswa2 menggu
nakan constructor kedua yang menerima parameter nama dan nim siswa dengan tipe d
ata string. package org.stth.latihan; public class Utama { public static void ma
in(String[] args) { Mahasiswa siswa1; siswa1 = new Mahasiswa(); System.out.print
ln("nama siswa1 adalah: "+siswa1.nama); Mahasiswa siswa2; siswa2 = new Mahasiswa
("Abdul Basith", "110-010-981"); System.out.println("nama siswa2 adalah "+siswa2
.nama); } }
2.4
Mengakses variabel dan method object
Variabel dan method sebuah object dapat diakses dengan syntax object.namaVariabe
l dan object.namaMethod(). Dapat tidaknya sebuah variabel dan method object diak
ses oleh object lain bergantung dari tipe access modifier dari variabel dan meth
od object tersebut (akan dipelajari pada bab 3.2). Bagian yang dihighlight pada
kode berikut menunjukkan cara mengakses variabel dan method object siswa2.
package org.stth.latihan; public class Utama { public static void main(String[]
args) { Mahasiswa siswa1; siswa1 = new Mahasiswa(); System.out.println("nama sis
wa1 adalah: "+siswa1.nama); Mahasiswa siswa2; siswa2 = new Mahasiswa("Abdul Basi
th", "110-010-981"); System.out.println("nama siswa2 adalah "+siswa2.nama); sisw
a2.tampilkanDataMahasiswa(); } }

2.5
Latihan
Buatlah sebuah class MataKuliah dalam program Java dengan spesifikasi sebagai be
rikut : 1. Class MataKuliah memiliki state : kodeMatakuliah, namaMatakuliah dan
sks. 2. Buatlah dua constructor untuk class tersebut. Constructor pertama tanpa
parameter dan constructor kedua dengan parameter seluruh state class MataKuliah
. 3. Buatlah method pada class MataKuliah tersebut untuk menuliskan kode, nama d
an sks mata kuliah pada console

3
3.1
Syntax Dasar
Variabel
Variabel pada pemrograman adalah wadah penyimpanan nilai dengan tipe data terten
tu. Setiap wadah dapat menampung jenis data tertentu sesuai dengan peruntukannya
. Tipe data tersebut dapat berupa bilangan integer, desimal, karakter dan jenis
lainnya. Saat program membuat sebuah variabel, operating system pada komputer me
ncadangkan lokasi pada memori untuk menampung variabel tersebut.
Petunjuk Analogi (perumpamaan) untuk mengilustrasikan variabel adalah keranjang
buah. Keranjang mewakili variabel dan buah mewakili tipe data yang dapat ditampu
ng variabel tersebut. Keranjang tersebut kemudian dapat diisi dengan buah-buahan
yang mewakili nilai dari variabel tersebut.
3.1.1
Deklarasi variabel
Sebelum dapat menggunakan variabel, variabel tersebut harus dideklarasikan terle
bih dahulu. Sintaks deklarasi variabel pada Java dapat dilihat pada contoh berik
ut
int bil; // deklarasi variabel bil bertipe data int (integer sederhana) char hur
uf; //deklarasi variabel huruf bertipe data char (character) float bilDes; //dek
larasi variabel bilDes bertipe data float (bilangan desimal) String kata; // dek
larasi variabel kata bertipe data class String Mahasiswa siswa; //deklarasi vari
abel siswa bertipe data class Mahasiswa
3.1.2
Tipe Data Variabel
Java mengenal dua jenis tipe data yakni tipe data primitif dan tipe data objek (
referensi). Contoh pertama hingga ketiga pada deklarasi variabel sebelumnya (int
, char, float) adalah contoh variabel bertipe data primitif, sedangkan String da
n Mahasiswa adalah tipe data object. Variabel bertipe data primitif Tipe data pr
imitif adalah tipe data sederhana yang disediakan built in oleh bahasa pemrogram
an. Pada Java terdapat 8 jenis tipe data primitif. Jika tidak diinisialisasi, va
riabel dengan tipe data primitif akan terisi dengan nilai default seperti pada t
abel berikut. Tipe byte short int long Deksripsi Integer 8 bit, dari -128 s/d 12
7 Integer 16 bit, dari -32.768 s/d 32.767 Integer 16 bit, 2.147.483.647 dari -2.
147.483.648 Default 0 0 s/d 0
Integer 64 bit, dari -9.223.372.036.854.775.808 s/d 0 9.223.372.036.854.775.807

float double char


Desimal dengan 1 angka di belakang koma Desimal dengan 2 angka di belakang koma
Bernilai karakter
0.0f 0.0d FALSE '\u0000' atau 0
boolean Bernilai logika benar (true) atau salah (false)
Variabel bertipe data objek/referensi Tipe data objek adalah tipe data yang digu
nakan untuk mengakses objek. Tipe data objek disebut juga tipe data referensi ka
rena ia merujuk pada ( refer to) class, array atau interface. Jika tidak diinisi
alisasi, maka variabel dengan tipe data objek tidak akan berisi nilai tertentu a
tau kosong (null). 3.1.3 Inisialisasi Variabel
Untuk variabel bertipe data primitif, variabel tersebut akan otomatis terisi nil
ai default saat dideklarasikan. Namun bila programmer ingin menginisiasi nilai u
ntuk variabel tersebut, maka programmer dapat menggunakan syntaks seperti dibawa
h ini : Contoh 1 int bil = 1; //deklarasi sekaligus inisialiasi variabel bertipe
integer bil dengan nilai 1 Contoh 2 int bil; //deklarasi variabel bil = 1; //in
isialisasi variabel yang telah dideklarasikan Untuk variabel bertipe data refere
nsi, inisialiasi dapat dilakukan dengan memanggil constructor kelas bersangkutan
dengan syntax new. Contoh pernggunaan constructor telah diperlihatkan pada bab 2.
3 mengenai object pada Java. Contoh berikut menyajikan dua gaya deklarasi dan in
isialiasi variabel berupa objek siswa1 dan siswa2 dari Class Mahasiswa. Mahasisw
a siswa1 = new Mahasiswa(); Mahasiswa siswa2; siswa2 = new Mahasiswa(); Petunjuk
Siswa1 dan siswa2 kemudian disebut sebagai objek atau instance dari class Mahas
iswa
3.1.4
Variabel Instance, Class dan Lokal
Berdasarkan posisi dan jenis deklarasinya, variabel dapat dibedakan menjadi tiga
jenis yakni variabel instance, variabel class dan variabel lokal. class Lingkar
an { final static double PI=3.14; double jarijari; variabel instance : jarijari
variabel class : PI variabel lokal : keliling dan

luas double getKeliling(){ double keliling; keliling = 2 * jarijari * PI; return


keliling; } double getLuas(){ double luas; luas = PI * jarijari * jarijari; ret
urn luas; } } Variabel instance merupakan variabel yang menjadi milik objek yang
merupakan instance dari class tertentu. Ini berarti bahwa setiap objek dari cla
ss tersebut dapat memiliki nilai variabel instance yang berbeda. Pada contoh kod
e class Lingkaran di atas yang merupakan variabel class adalah 'jarijari'. Artin
ya, misalkan terdapat dua objek Lingkaran a dan b, nilai 'jarijari' a dan b dapa
t berbeda. Variabel class di sisi lain adalah milik class yang bersangkutan. Ini
berarti bahwa setiap objek dari class tersebut akan berbagi nilai variabel clas
s yang sama. Untuk mendeklarasikan variabel class, ditambahkan modifier static s
ebelum tipe data. Variabel ini umumnya digunakan untuk mendeklarasikan konstanta
. Pada contoh kode class Lingkaran di atas, yang merupakan variabel instance ada
lah 'PI'. Artinya, misalkan terdapat dua objek Lingkaran a dan b, nilai PI tetap
sama. Variabel lokal adalah variabel yang digunakan di dalam blok method atau c
onstructor. Variabel ini tidak dapat digunakan di tempat lain selain pada method
atau constructor yang mengandung variabel tersebut. Pada contoh kode class Ling
karan di atas, terdapat dua method yakni getKeliling() dan getLuas(). Pada metho
d getKeliling() terdapat variabel lokal 'keliling' sedangkan pada variabel lokal
pada method getLuas() adalah 'luas'.
3.2
Modifier
Java mengenal dua jenis modifier yakni access modifier dan non-access modifier.
Dengan menggunakan modifier, programmer mengatur dari mana dan kapan sebuah clas
s, variabel atau method dan constructor dapat dipanggil. Modifier digunakan deng
an menyertakan keyword jenis modifier saat deklarasi class, variabel, method dan
constructor bersangkutan.
Access modifier pada Java adalah fasilitas yang memungkinkan
programmer melakukan encapsulation/data-hiding pada variabel atau method tertent
u. Java mengenal empat jenis access modifier yakni public, protected, private da
n tanpa access modifier. Pada level class, access modifier yang dapat digunakan
adalah public dan tanpa access modifier dengan penggunaan sebagai berikut : 1. D
engan menggunakan access modifier public, class dapat diakses dari mana saja 2.
Tanpa access modifier, class hanya bisa diakses dari package yang sama Pada leve
l member (variabel, method dan constructor), access modifier dapat digunakan seb
agai berikut: 1. Untuk modifier public dan tanpa modifier, berperilaku sama deng
an level class

2. Dengan menggunakan modifier private, akses dapat dilakukan dari dalam class b
ersangkutan 3. Dengan menggunakan modifier protected, akses dapat dilakukan dari
dalam class, subclass dan package yang sama Non-access modifier pada Java dised
iakan untuk berbagai keperluan antara lain: 1. Modifier static untuk deklarasi v
ariabel dan method static yang menjadi milik class bersangkutan (lihat tipe vari
abel class pada 3.1.4). 2. Modifier final untuk finalisasi implementasi class, m
ethod dan variabel 3. Modifier abstract untuk membuat abstract class dan method
4. Modifier synchronized dan volatile digunakan untuk thread Contoh class Lingka
ran berikut adalah modifikasi dari class pada bab 3.1.4, perhatikan penambahan m
odifier pada variabel, method dan constructor yang ada. Pada class baru ini, var
iabel jarihari tidak akan bisa diakses dari luar class karena menggunakan modifi
er private. Nilai jarijari kemudian dapat diisi dengan memanggil constructor Lin
gkaran.
public class Lingkaran { final static double PI=3.14; private double jarijari; p
ublic Lingkaran(double jarijari) { this.jarijari = jarijari; } public double get
Keliling(){ double keliling; keliling = 2 * jarijari * PI; return keliling; } pu
blic double getLuas(){ double luas; luas = PI * jarijari * jarijari; return luas
; }
}
Pelajari dampaknya dengan mencoba kode dibawah ini
public class CobaModifier { public static void main(String[] args){ Lingkaran a
= new Lingkaran(3.0); System.out.println("Luas lingkaran :" + a.getLuas()); Syst
em.out.println("Keliling lingkaran :" + a.getKeliling()); } }

3.3
Method
Sebuah method pada java adalah sebuah blok kode pada class berisi kumpulan perin
tah yang digabung untuk melakukan operasi tertentu. Struktur deklarasi sebuah me
thod dapat dilihat pada ilustrasi berikut ini
Gambar 11: Struktur deklarasi method Beberapa poin aturan terkait method :
Metho
d dibuat dengan mixed case, diawali dengan huruf kecil pada kata pertama kemudia
n huruf besar pada awal kata berikutnya Method dapat dibuat dengan atau tanpa pa
rameter masukan Method dapat dibuat dengan atau tanpa keluaran tertentu, method
tanpa keluaran tertentu dideklarasikan dengan menuliskan 'void' sebagai tipe dat
a keluarannya (void=kosong) Blok method dimulai dengan karakter '{' dan ditutup
dengan karakter '}' Modifier sebuah method dapat dilihat pada sub bab 3.2 mengen
ai modifier Method dipangggil dengan syntax objek.namaMethod(), jika method ters
ebut tersebut memiliki modifier static maka ia dapat dipanggil dari Namaclass.na
maMethod()

Berikut adalah beberapa contoh method dengan struktur yang berbeda


public static void tulisKeConsole(String kalimat) { System.out.println(kalimat);
} Method bersifat static, tanpa keluaran, menerima masukan parameter string unt
uk dituliskan ke layar public static int pilihYangBesar(int a, int b){ if (a>b){
return a; } else { return b; } } Method bersifat static, menerima parameter mas
ukan a dan b dan tipe data int keluaran dengan

public double getLuas(){ double luas; luas = PI * jarijari * jarijari; return lu


as; } Method tanpa parameter, dengan keluaran bertipe data double public void pr
edikatLulus(Mahasiswa siswa){ if (siswa.lulus()){ System.out.println(siswa.nama
+ " lulus dari STTH"); if (siswa.ipk >=3.5){ System.out.println(" dengan predika
t Cum Laude"); } } else { System.out.println(siswa.nama + " belum lulus dari STT
H"); } } Method tanpa keluaran, menerima masukan berupa object Mahasiswa
3.4
Operator
Java mengenal beberapa jenis operator, pada kode-kode program berikut akan didem
onstrasikan cara penggunaan operator aritmatik, operasional dan logika pada Java
. 3.4.1 Operator aritmatik pada Java
Kode dibawah ini mendemonstrasikan penggunaan operator aritmatik (+,-,/,%,++,--)
pada Java static void operatorAritmatik(){ int a = 35; int b = 10; System.out.p
rintln(a + b);//operator penambahan System.out.println(a - b);//operator pengura
ngan System.out.println(a / b);//operator pembagian, System.out.println(a * b);/
/operator perkalian System.out.println(a % b);//operator modulus, sisa dari hasi
l pembagian a++;//operator menambahkan 1 pada variabel System.out.println(a); b-;//operator mengurangi 1 pada nilai variabel System.out.println(b); } Hasil pad
a console bila kode di atas dijalankan 45 25 3 350 5 36 9
3.4.2
Operator relasional pada Java
Kode dibawah ini mendemonstrasikan penggunaan operator relasional (+,-,/,%,++,-) pada Java

static void operatorRelasional(){ int a = 35; int b = 10; System.out.println(a =


= b);//operator sama dengan System.out.println(a != b);//operator tidak sama den
gan System.out.println(a > b);//operator lebih besar System.out.println(a < b);/
/operator lebih kecil System.out.println(a >= b);//operator lebih besar sama den
gan System.out.println(a <= b);//operator lebih kecil sama dengan } Hasil pada c
onsole bila kode di atas dijalankan false true true false true false 3.4.3 Opera
tor logika pada Java
Kode dibawah ini mendemonstrasikan penggunaan operator logika (&&,||,!) pada Jav
a static void operatorLogika(){ boolean a=true; boolean b=false; System.out.prin
tln(a && b);//operator AND System.out.println(a || b);//operator OR System.out.p
rintln(a && !b);//operator NOT (!) } Hasil pada console bila kode di atas dijala
nkan false true true
3.5
Conditional (if & switch)
Dua statement conditional/pengambilan keputusan pada bahasa pemrograman Java ada
lah statement 'if' dan statement 'switch'. 3.5.1 Statement if
Statement if menggunakan evaluasi terhadap sebuah ekspresi boolean (true/false).
Bila ekspresi boolean tersebut bernilai true, maka kode di dalam blok selanjutn
ya akan dieksekusi. Statement if juga dapat dilengkapi dengan statement else yan
g berfungsi menyediakan kode program untuk dieksekusi bila ekspresi boolean ters
ebut bernilai false. Kode dibawah mendemostrasikan penggunaan statement if dan i
f else. static void demoIfStatement(){ boolean b = true; if (b) { System.out.pri
ntln("b bernilai true"); } } static void demoIfElseStatement(){

int a=10; int b=20; if (a >= b){ System.out.println("a lebih besar sama dengan b
"); } else { System.out.println("a lebih kecil dari b"); } } Jika kode dijalanka
n, apa output yang tertulis pada console?
3.5.2
Statement switch
Statement switch digunakan untuk menguji sebuah sama-tidaknya nilai variabel ter
tentu terhadap sebuah daftar nilai. Tiap nilai dalam daftar disebut sebuah 'case
', dan variabel dimaksud akan diuji terhadap case yang ada secara berurutan. Kod
e berikut mendemonstrasikan cara penggunaan statement switch static void demoSwi
tchStatement(){ char nilai = 'A'; switch (nilai) { case 'E': System.out.println(
"Anda belum lulus"); break; case 'D': System.out.println("Anda belum lulus"); br
eak; case 'C': System.out.println("Anda lulus dengan nilai cukup"); break; case
'B': System.out.println("Anda lulus dengan nilai baik"); break; case 'A': System
.out.println("Selamat, anda mendapatkan grade nilai terbaik"); break; default: S
ystem.out.println("Nilai anda tidak valid"); break; } } Jika kode dijalankan, ap
a output yang tertulis pada console?
3.6
Loop (perulangan)
Perulangan pada Java dapat dilakukan dengan dua cara yakni menggunakan perintah
while dan for. 3.6.1 Perintah while
Perintah while memiliki dua variasi yakni while dan do-while. Pada do-while, per
intah di dalam blok do dijalankan sekali sebelum ekspresi boolean yang ada dieva
luasi. Dua contoh berikut mendemonstrasikan penggunaan variasi tersebut.

static void demoWhile(){ int c = 0; while (c<10){ System.out.println(c); c++; }


} static void demoDoWhile(){ int c = 9; do { System.out.println(c); c++; } while
(c>10); } Jika kode dijalankan, apa output yang tertulis pada console?
3.6.2
Perintah for
Perintah for memiliki beberapa variasi dan mendukung perulangan pada tipe data a
rray dan collection. Kode sederhana perulangan menggunakan perintah for dapat di
lihat pada kode berikut, sedangkan kode perulangan dengan variasi lainnya akan d
ibahas pada bab mengenai array. static void demoFor(){ for (int i = 0; i < 10; i
++) { System.out.println(i); } } Jika kode dijakankan pada console akan tertulis
bilangan 0 s/d 9
3.7
Accessor dan Mutator (Getter & Setter)
Salah satu kelebihan dari Java sebagai sebuah bahasa pemrograman berbasis object
adalah fasilitas encapsulation. Fasilitas ini disediakan melalui access modifie
r (private/protected/public) yang dapat disematkan pada class, variabel ataupun
method. Contoh penerapan standar penggunaan access modifier adalah pada method a
ccessor dan mutator atau lazim disebut getter dan setter. Pada standar ini varia
bel sebuah object tidak diperkenankan untuk diakses maupun diubah secara langsun
g. Akses terhadap nilai variabel object harus dilakukan melalui method getter se
dangkan pengubahan nilai dilakukan melalui setter. Untuk mengontrol hal ini, sel
uruh variabel pada class object bersangkutan dideklarasikan dengan access modifi
er private. Dengan penggunaan getter/setter kita dapat mengontrol nilai yang dib
erikan terhadap variabel bersangkutan agar sesuai dengan aturan tertentu yang in
gin kita terapkan. Perhatikan contoh pada kode class Lingkaran berikut package o
rg.stth.latihan; public class Lingkaran { final static double PI=3.14; private d
ouble jarijari;

public Lingkaran(double jarijari) { this.jarijari = jarijari; } public double ge


tJarijari() { return jarijari; } public void setJarijari(double jarijari) { if (
jarijari < 0){ this.jarijari = 0; } else { this.jarijari = jarijari; } } public
double getKeliling(){ double keliling; keliling = 2 * jarijari * PI; return keli
ling; } public double getLuas(){ double luas; luas = PI * jarijari * jarijari; r
eturn luas; }
}
Perhatikan pada tipe data variabel jarijari dan method setJarijari. Tipe data do
uble memungkinkan nilai negatif, sedangkan jari-jari sebuah lingkaran tidak mung
kin bernilai negatif. Tambahan kode yang diberikan pada method setJarijari mengo
ntrol agar jari-jari selalu bernilai nol atau positif.
Petunjuk Eclipse menyediakan fasilitas untuk membuat getter dan setter secara ot
omatis. Klik kanan pada sebarang tempat pada class editor, pilih source, kemudia
n pilih generate getter & setter
3.8
Latihan
Buatlah sebuah class NilaiMataKuliah dalam program Java dengan spesifikasi sebag
ai berikut : 1. Class NilaiMataKuliah memiliki state/variabel : mataKuliah denga
n tipe data object Matakuliah, mahasiswa dengan tipe data object Mahasiswa, thnA
mbil dengan tipe data int dan nilai dengan tipe data Char 2. Beri modifier priva
te pada seluruh state tersebut 3. Lengkapi class dengan getter & setter untuk se
luruh state tersebut 4. Lengkapi setter nilai (setNilai) dengan validasi agar ni
lai yang dapat diterima program hanya A,B,C,D,E selain dari nilai itu program se
cara otomatis mengisi nilai E

5. Lengkapi class dengan sebuah method isLulus() yang menghasilkan nilai true/fa
lse berdasarkan isi dari state nilai 6. Lengkapi class dengan sebuah method getB
obot() yang menghasilkan nilai double berisi bobot nilai mata kuliah (jika A=4,
jika B=3, C=2, D=1, lainnya=0)

4
Struktur Data Array dan Collection
?
4.1 Array
Pertanyaan pengantar: Jika mahasiswa mengikuti lebih dari satu mata kuliah, tipe
data apa yang dapat digunakan pada variabel daftar mata kuliah yang diikuti ole
h mahasiswa tersebut?
Untuk menyimpan lebih dari satu object pada sebuah variabel, java menyediakan ti
pe data array dan collection.
Untuk keperluan yang sederhana, programmer dapat memilih tipe data array. Array
dapat digunakan untuk koleksi object dengan jumlah yang tetap. Berdasarkan keter
batasan ini array hanya cocok digunakan jika jumlah object yang disimpan pada ar
ray tersebut yang tidak memiliki kemungkinan bertambah. Contoh berikut menyajika
n cara menggunakan array, dari deklarasi hingga looping ke dalam array bersangku
tan. Penting untuk diingat bahwa pada bahasa pemrograman Java, indeks sebuah arr
ay dimulai dari angka 0. package org.stth.latihan; public class CobaArray { stat
ic void arrayString(){ //deklarasi dan instansiasi array String[] lampuLaluLinta
s; lampuLaluLintas = new String[3]; //isi array lampuLaluLintas[0]="Hijau"; lamp
uLaluLintas[1]="Kuning"; lampuLaluLintas[2]="Merah"; //output isi array ke conso
le for (String string : lampuLaluLintas) { System.out.println(string); } } stati
c void arrayIntDuaDimensi(){ int[][] papancatur; papancatur = new int[8][8]; for
(int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { System.out.println("Kol
om "+ i+ " dan baris "+ j); } } } public static void main(String[] args){ arrayS
tring(); arrayIntDuaDimensi(); }

}
4.2
Collection
Jika array memiliki kelemahan dari sisi jumlah kandungan object yang tidak bisa
ditambah, tidak demikian halnya dengan collection. Dengan collection, programmer
tidak perlu mendefinisikan ukuran seperti pada array. Jumlah object yang dikand
ung collection dapat mengembang sesuai kebutuhan. Java mengenal 3 kelompok utama
tipe data collection yakni list, set dan map. ketiga jenis collection ini dapat
mengembang sesuai jumlah data yang dimasukkan ke dalamnya. List adalah kelompok
tipe data collection yang dapat diperlakukan sebagaimana array biasa. List meng
ijinkan object yang sama untuk ditambahkan dua kali (duplikat). List dapat diaks
es menggunakan indeks posisi object pada list bersangkutan. Tipe data yang terma
suk dalam kelompok list antara lain: ArrayList dan LinkedList Set tidak mengijin
kan adanya duplikasi isi dan object di dalamnya tidak dapat diakses menggunakan
indeks seperti pada List. Tipe data yang termasuk dalam kelompok set adalah Hash
Set dan LinkedHashSet dan TreeSet. TreeSet adalah jenis set khusus yang isinya t
erurut berdasarkan urutan alaminya (angka, karakter), namun dengan performa lebi
h lambat. Map menggunakan key untuk mengakses object/value tertentu dan dapat me
ngandung duplikat. Tipe data yang termasuk dalam kelompok map adalah HashMap, Tr
eeMap, LinkedHashMap dan IdentityHashMap

Contoh class berikut memperlihatkan bagaimana cara menggunakan ArrayList, HashMa


p dan TreeSet. Jalankan class tersebut dan perhatikan urutan munculnya output li
st pada console. package org.stth.latihan; import import import import import im
port import import java.util.ArrayList; java.util.HashMap; java.util.HashSet; ja
va.util.Iterator; java.util.Map; java.util.Map.Entry; java.util.Set; java.util.T
reeSet;
public class CobaListSetMap { static void contohList(){ //deklarasi dan instansi
asi array list ArrayList<Mahasiswa> daftarMahasiswa; daftarMahasiswa = new Array
List<Mahasiswa>(); //mengisi daftar dengan 30 object mahasiswa for (int i = 0; i
< 30; i++) { Mahasiswa s = new Mahasiswa(); s.nama = "Mahasiswa ke-"+(i+1); daf
tarMahasiswa.add(s); } //loop ke dalam array list mengunakan for

for (Mahasiswa mahasiswa : daftarMahasiswa) { System.out.println(mahasiswa.nama)


; } } static void contohMap(){ HashMap<String, String> kabkota; kabkota = new Ha
shMap<String, String>(); //isi dengan singkatan sbg key, nama panjang sebagai va
lue kabkota.put("Mtr", "Kotamadya Mataram"); kabkota.put("Lobar", "Kabupaten Lom
bok Barat"); kabkota.put("Loteng", "Kabupaten Lombok Tengah"); kabkota.put("Loti
m", "Kabupaten Lombok Timur"); //loop ke dalam hashmap menggunakan iterator Iter
ator iter = kabkota.entrySet().iterator(); while (iter.hasNext()) { Map.Entry is
i = (Map.Entry) iter.next(); System.out.println(isi.getKey() + " : " + isi.getVa
lue()); } } static void contohSet(){ //deklarasi dan inisiasi TreeSet dengan isi
String Set<String> s = new TreeSet<String>(); //penambahan object ke dalam tree
set s.add("Brokoli"); s.add("Dendeng"); s.add("Pelecing"); s.add("Capcay"); s.ad
d("Ares"); s.add("Beberok"); //loop dan mencetak isi TreeSet ke console for (Str
ing string : s) { System.out.println(string); } } public static void main(String
[] args){ contohList(); contohMap(); contohSet(); }
}
4.3
Latihan
Buatlah sebuah Java Project baru dengan judul Latihan Collection Buatlah/Siapkan c
lass Mahasiswa (contoh bab 1) MataKuliah (Latihan bab 2) dan class NilaiMataKuli
ah (latihan bab 3) pada project tersebut Modifikasi class Mahasiswa dengan spesi
fikasi sebagai berikut : 1. State/Variabel: nim, nama, jurusan dan angkatan dan
daftar nilai mata kuliah dalam ArrayList (misal: ArrayList<NilaiMatakuliah> nila
i) 2. Buatlah method yang dapat menghitung IPK mahasiswa berdasarkan

nilai pada variabel nilai mata kuliah yang anda buat Insisasi sebuah object maha
siswa dengan 3 jenis mata kuliah beserta nilainya kemudian tampilkan IPK mahasis
wa tersebut pada console

5
Tutorial Akses Database dengan JDBC
Bab ini berisi tutorial akses database menggunakan Java Database Connectivity (J
DBC). Di akhir tutorial, anda akan dapat membuat program yang terkoneksi dengan
database server. Contoh pada tutorial ini menggunakan database MySQL, bila anda
sudah biasa menggunakan RDBMS, anda dapat menggunakan tutorial ini dengan menggu
nakan RDBMS lain dengan mengganti driver JDBC sesuai database yang anda gunakan
dan parameter koneksi pada class ConnectionFactory. Tutorial ini memanfaatkan la
tihan-latihan pada bab sebelumnya, terutama latihan pada bab 2 , 3 dan 4. Progra
m pada tutorial ini akan membaca dan menyimpan data mahasiswa, mata kuliah dan n
ilai mata kuliah yang diambil mahasiswa pada database.
5.1
Menyiapkan Database
Bagian ini berisi tutorial menyiapkan sebuah database server (MySQL) sebagai tar
get koneksi program yang akan kita bangun beserta database dan tabel-tabel untuk
menampung data kita. 5.1.1 Instalasi Database Server (MySQL)
Jika laptop/komputer anda sudah terinstall MySQL/RDBMS lain, bagian ini dapat di
lewati. Siapkan file instalasi MySQL Server dan MySQL Workbench/ MySQL Community
Server terbaru http://dev.mysql.com/downloads/mysql/ dapat didownload secara gr
atis pada alamat :
MySQL Workbench bisa didapatkan pada alamat http://dev.mysql.com/downloads/workb
ench/ Lakukan instalasi MySQL server seperti layaknya instalasi program biasa de
ngan mengklik file instalasi yang anda miliki, ikuti perintah yang ada pada laya
r. Jika anda bingung saat installer menawarkan pilihan instalasi, anda dapat men
ggunakan screenshots berikut sebagai panduan.
Checklist pilihan untuk mengkonfigurasi MySQL server

Pilih tipe konfigurasi Standard


Berikan password untuk user root, ingat/tulis password yang anda isi
Klik Execute untuk langkah terakhir instalasi
Jika layar ini tampil berarti komputer anda telah terinstall MySQL
5.1.2
Instalasi MySQL Workbench
Langkah selanjutnya adalah menginstall MySQL workbench sebagai GUI Tool untuk me
ngelola database MySQL kita. Klik dua kali pada file instalasi dan gunakan scree
nshot berikut sebagai panduan saat installer menawarkan pilihan instalasi.

Kemudian kita akan mencoba koneksi database server yang telah terinstall pada ko
mputer menggunakan MySQL workbench. Jalankan MySQL Workbench, sampai anda menjum
pai layar berikut
Perhatikan kolom pertama (SQL Development), klik pada link 'New Connection', aka
n muncul form untuk setup koneksi baru

Berikut adalah panduan untuk melengkapi isian pada form koneksi baru 1. Isi 'Con
nection Name' dengan nama koneksi, misalnya localdb 2. Pilih Standard (TCP/IP) s
ebagai metode koneksi (biasanya sudah terpilih secara default) 3. Isi hostname d
engan 127.0.0.1 dan port 3306 (biasanya sudah terisi secara default) 4. Isi user
name dengan root (biasanya sudah terisi secara default) 5. Klik pada tombol 'Sto
re in Vault' dan isi form yang muncul dengan password database yang sudah anda b
erikan pada instalasi MySQL sebelumnya kemudian klik 'OK'
6. Klik pada tombol 'Test Connection', jika isian anda benar akan muncul notifik
asi 'Connection parameters are correct', kemudian 'klik OK.
7. Klik 'OK' untuk menyimpan koneksi ini, anda akan dibawa kembali ke layar utam
a Workbench. Jika seluruh langkah ini dapat anda jalankan, berarti database serv
er MySQL pada komputer anda siap digunakan. 5.1.3 Desain Tabel pada Database
Pada tahap ini kita akan melakukan merancang tabel-tabel database untuk menyimpa
n data mahasiswa, mata kuliah dan nilai mata kuliah.

Petunjuk Tabel dibentuk dari field-field dengan tipe data tertentu, setiap field
mewakili satu jenis data. Data sebuah tabel disebut record, setiap record memil
iki nilai atas field-field yang dimiliki tabel tersebut.
Tabel untuk menyimpan data mahasiswa. Untuk menyimpan data mahasiswa kita akan m
embuat tabel bernama sama yakni tabel mahasiswa. Variabel pada Class Mahasiswa y
ang kita miliki sebelumnya (bab 2.2) akan kita konversi menjadi field-field pada
tabel tersebut. Variabel pada class Mahasiswa dari bab 2.2 antara lain: nim, na
ma, jurusan, tahun masuk
Selain keempat variabel tersebut, kita akan menambahkan satu variabel baru yakni
'id' pada Class Mahasiswa untuk kita jadikan 'primary key' pada tabel Mahasiswa
. Kita bisa saja menjadikan 'nim' sebagai primary key pada tabel Mahasiswa, namu
n praktik seperti ini tidak direkomendasikan karena kita tidak bisa menjamin bah
wa aturan mengenai pengkodean nim mahasiswa tidak akan berubah. Di sisi lain pri
mary key haruslah kebal terhadap perubahan agar tidak diperlukan banyak penyesua
ian pada level kode program saat terdapat perubahan aturan. Tabel berikut memper
lihatkan konversi variabel dari class Mahasiswa menjadi field pada tabel Mahasis
wa pada database Variabel class Mahasiswa pada kode Field tabel Program Database
id (long) nim (String) nama (String) jurusan (String) thnMasuk (int) nim (varch
ar) nama (varchar) jurusan (varchar) thnmasuk (int) Mahasiswa pada
id (int), primary key, auto increment
Ilustrasi penyimpanan data Mahasiswa pada tabel mahasiswa dapat dilihat pada tab
el berikut
Dengan cara yang sama seperti pada class Mahasiswa maka konversi variabel dari c
lass MataKuliah menjadi tabel matakuliah pada database menjadi
Variabel class MataKuliah pada kode Field tabel matakuliah pada Database

Program id (long) kode (String) nama (String) sks (int) id (int), primary key ko
de (varchar) nama (varchar) sks (int)
Untuk class NilaiMataKuliah, terdapat tipe variabel objek berupa mahasiswa dan m
atakuliah, kita cukup mengkonversinya menjadi primary key dari tabel mahasiswa d
an primary key dari tabel matakuliah yakni kolom id.
Variabel class kode Program id (long)
NilaiMataKuliah
pada Field tabel Database
nilaimatakuliah
pada
id (int), primary key idmahasiswa (int), foreign key idmatakuliah (int), foreign
key thnambil (int) semester (int) nilai (varchar)
mahasiswa (Mahasiswa) matakuliah (MataKuliah) thnAmbil (int) semester (int) nila
i (char)
Jika dipresentasikan dalam sebuah ERD (Entity Relationship Diagram), maka relasi
antar tabel kita akan terlihat seperti diagram dibawah ini
Relasi antara tabel mahasiswa, matakuliah dan nilaimatakuliah

Petunjuk Entity Relationship Diagram (ERD) adalah sebuah diagram yang menggambar
kan keterkaitan antara tabel-tabel pada sebuah database.
5.1.4
Inisiasi Database dan Data Dummy
Pada titik ini kita sudah memiliki desain tabel untuk menyimpan data-data kita.
Langkah selanjutnya adalah menginisiasi database dan tabel sesuai desain yang te
lah kita buat dengan menggunakan MySQL workbench. Pada tutorial ini disediakan d
ua pilihan untuk melakukan hal tersebut. Pertama, menggunakan MySQL workbench GU
I untuk membuat tabel dan melakukan entry data. Jika memilih menggunakan cara in
i, anda akan dapat memahami lebih baik konsep tabel, field, record dan key pada
database. Kedua, menggunakan dua SQL script yang telah disiapkan sebelumnya. Car
a ini lebih cepat karena anda tinggal menyalin script dimaksud dan mengeksekusin
ya di layar SQL editor. Cara pertama, menggunakan workbench GUI dapat dilakukan
dengan langkah-langkah sebagai berikut.
Jalankan SQL workbench kemudian klik dua kali pada koneksi yang telah kita buat
pada bab sebelumnya (bab 5.1.2)

Klik kanan pada database test pada daftar SCHEMAS, kemudian pilih create schemas
Beri nama 'dbtutorialjdbc' pada nama skema kemudian klik apply dua kali (untuk k
onfirmasi)

Perhatikan bahwa pada tahap ini kita sudah memiliki schema baru yakni 'dbtutoria
ljdbc' Selanjutnya kita akan membuat tabel untuk menampung data Mahasiswa, MataK
uliah dan NilaiMataKuliah sesuai dengan desain yang telah kita buat pada bab 5.1
.3.
Telusuri item pada skema 'dbtutorialjdbc' , kemudian klik kanan pada 'table' dan
pilih 'Create Table'

Isi form untuk membuat tabel mahasiswa dengan detail seperti pada gambar, kemudi
an klik 'Apply' dua kali Ulangi langkah-langkah pembuatan tabel Mahasiswa untuk
membuat tabel Matakuliah dan Nilaimatakuliah. Gunakan dua screenshot berikut seb
agai panduan.
Isi form untuk membuat tabel matakuliah dengan detail seperti pada gambar, kemud
ian klik 'Apply' dua kali

Isi form untuk membuat tabel nilaimatakuliah dengan detail seperti pada gambar,
kemudian klik 'Apply' dua kali
Perhatikan bahwa jika tahap sebelumnya sukses, kita akan memiliki tiga tabel pad
a skema dbtutorialjdbc Cara kedua, menggunakan script dapat dilakukan dengan lan
gkah-langkah sebagai berikut.

Salin script berikut pada SQL Editor terpisah kemudian eksekusi dengan menekan i
con petir atau menu Query-Execute. CREATE DATABASE IF NOT EXISTS `dbtutorialjdbc
`; USE `dbtutorialjdbc`; CREATE TABLE `matakuliah` ( `id` int(11) NOT NULL AUTO_
INCREMENT, `kode` varchar(11) DEFAULT NULL, `nama` varchar(45) DEFAULT NULL, `sk
s` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id_UNIQUE` (`id`) ) ENG
INE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; CREATE TABLE `mahasiswa` ( `
id` int(11) NOT NULL AUTO_INCREMENT, `nim` varchar(12) DEFAULT NULL, `nama` varc
har(45) DEFAULT NULL, `jurusan` varchar(45) DEFAULT NULL, `thnmasuk` int(11) DEF
AULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id_UNIQUE` (`id`) ) ENGINE=InnoDB AUT
O_INCREMENT=4 DEFAULT CHARSET=latin1; CREATE TABLE `nilaimatakuliah` ( `id` int(
11) NOT NULL AUTO_INCREMENT, `idmahasiswa` int(11) DEFAULT NULL, `idmatakuliah`
int(11) DEFAULT NULL,

`thnambil` int(11) DEFAULT NULL, `semester` int(11) DEFAULT NULL, `nilai` varcha
r(1) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id_UNIQUE` (`id`), KEY `fk_ni
laimatakuliah_1` (`idmahasiswa`), KEY `fk_nilaimatakuliah_2` (`idmatakuliah`), C
ONSTRAINT `fk_nilaimatakuliah_1` FOREIGN KEY (`idmahasiswa`) REFERENCES `mahasis
wa` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_nilaimatakuli
ah_2` FOREIGN KEY (`idmatakuliah`) REFERENCES `matakuliah` (`id`) ON DELETE NO A
CTION ON UPDATE NO ACTION ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=lati
n1; Bila script ini selesai dijalankan, hasilnya akan sama dengan cara sebelumny
a yakni kita akan memiliki schema 'dbtutorialjdbc' dengan tiga tabel yakni mahas
iswa, matakuliah dan nilaimatakuliah. Inisisasi Data Dummy Langkah selanjutnya a
dalah mengisi tabel yang telah kita buat dengan records data. Seperti langkah se
belumnya, ada dua pilihan cara untuk mengisi tabel pada tutorial ini. Cara perta
ma adalah cara manual. Cara ini membutuhkan waktu yang agak lama namun dapat mem
berikan pemahaman lebih mengenai konsep tabel dan data di dalamnya (records). An
da bisa mengisinya secara manual dengan mengklik kanan pada tabel yang akan diis
i kemudian pilih 'edit table data'. Cara pengisiannya seperti saat mengisi data
pada aplikasi spreadsheet (MS Excel, calc, dll). Gunakan screenshot pada tabel-t
abel berikut sebagai panduan untuk mengisi data ketiga tabel yang ada pada skema
'dbtutorialjdbc', jangan lupa menekan tombol apply setelah anda selesai melakuk
an pengisian.

Cara kedua adalah menggunakan script. Cara ini jauh lebih cepat dan cocok bagi a
nda yang telah memiliki pengetahuan dasar database. Salin dan eksekusi script be
rikut pada SQL editor. USE `dbtutorialjdbc`; /* * inisiasi data tabel mahasiswa
*/ INSERT INTO `mahasiswa` VALUES (1,'01210991','Dende Raisah','Teknik Informati
ka',2012); INSERT INTO `mahasiswa` VALUES (2,'01210992','Menggep el Fanshury','T
eknik Informatika',2012); INSERT INTO `mahasiswa` VALUES (3,'01210993','Mahdan R
engget','Teknik Informatika',2012); /* * inisiasi data tabel matakuliah */ INSER
T INTO `matakuliah` VALUES INSERT INTO `matakuliah` VALUES INSERT INTO `matakuli
ah` VALUES INSERT INTO `matakuliah` VALUES
(1,'AP','Algoritma Pemrograman',2); (2,'PBO','Pemrograman Berorientasi Objek',3)
; (3,'PCS','Pemrograman Client Server',3); (4,'PTI','Pengantar Teknologi Informa
si',2);
/* * inisiasi data tabel nilaimatakuliah */ INSERT INTO `nilaimatakuliah` VALUES
INSERT INTO `nilaimatakuliah` VALUES INSERT INTO `nilaimatakuliah` VALUES INSER
T INTO `nilaimatakuliah` VALUES INSERT INTO `nilaimatakuliah` VALUES INSERT INTO
`nilaimatakuliah` VALUES INSERT INTO `nilaimatakuliah` VALUES INSERT INTO `nila
imatakuliah` VALUES
(1,1,1,2012,1,'B'); (2,1,2,2012,1,'B'); (3,1,3,2010,1,'A'); (4,1,4,2010,2,'A');
(5,2,1,2012,1,'A'); (6,2,2,2012,1,'A'); (7,2,3,2011,1,'A'); (8,2,4,2011,2,'B');

INSERT INSERT INSERT INSERT


INTO INTO INTO INTO
`nilaimatakuliah` `nilaimatakuliah` `nilaimatakuliah` `nilaimatakuliah`
VALUES VALUES VALUES VALUES
(9,3,1,2012,1,'C'); (10,3,2,2012,1,'B'); (11,3,3,2011,1,'A'); (12,3,4,2011,2,'B'
);
Jika langkah di atas telah selesai anda lakukan, maka kita siap menuju tahap sel
anjutnya yakni programming.
5.2
Pemrograman
Buat sebuah project menggunakan Eclipse, beri nama project tersebut 'TutorialJDB
C' kemudian ikuti langkah-langkah berikut. 5.2.1 Menambahkan library JDBC driver
untuk MySQL pada project
Siapkan JDBC Driver untuk MySQL, download file jar resmi dari situs mySQL pada a
lamat http://dev.mysql.com/downloads/connector/j/
Cara menambahkan library JDBC ke dalam build path Copy file tersebut pada explor
er dan tempatkan/paste pada project anda menggunakan eclipse. Selanjutnya tambah
kan pada build path dengan cara klik kanan pada file tersebut pada eclipse, pili
h Build Path Add to Build Path 5.2.2 Class Koneksi
Untuk menginisiasi koneksi ke database server yang telah kita siapkan, buatlah c
lass ConnectionFactory dengan kode seperti dibawah ini. Sesuaikan parameter data
base (DB_URL, USER, PASS) dengan konfigurasi database anda.

package org.stth.latihan.database; import java.sql.Connection; import java.sql.D


riverManager; import java.sql.SQLException; public class ConnectionFactory { sta
tic final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_U
RL = "jdbc:mysql://localhost/dbtutorialjdbc"; // Database credentials static fin
al String USER = "root"; static final String PASS = ""; private static Connectio
nFactory koneksi = null; private ConnectionFactory() { try { Class.forName(JDBC_
DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public Co
nnection getConnection() throws SQLException { Connection conn = DriverManager.g
etConnection(DB_URL,USER,PASS); return conn; } public static ConnectionFactory g
etInstance() { if (koneksi == null) { koneksi = new ConnectionFactory(); } retur
n koneksi;
} }
5.2.3
Class Entitas
Class entitas adalah class yang berasosiasi dengan data (record) yang kita simpa
n ke dalam database. Pada kasus dalam tutorial ini kita memiliki tiga class enti
tas yakni class Mahasiswa, MataKuliah dan NilaiMataKuliah. Berikut adalah kode u
ntuk ketiga class tersebut. Class Mahasiswa package org.stth.latihan.database; i
mport java.util.ArrayList; public class Mahasiswa { private private private priv
ate long id; String nama; String nim; String jurusan;

private int thnMasuk; private ArrayList<NilaiMataKuliah> daftarNilaiKuliah= new


ArrayList<NilaiMataKuliah>(); public Mahasiswa(String nama, String nim, String j
urusan, int tahunmasuk) { super(); this.nama = nama; this.nim = nim; this.jurusa
n = jurusan; this.thnMasuk = tahunmasuk; } public Mahasiswa() { } public long ge
tId() { return id; } public void setId(long id) { this.id = id; } public String
getNama() { return nama; } public void setNama(String nama) { this.nama = nama;
} public String getNim() { return nim; } public void setNim(String nim) { this.n
im = nim; } public String getJurusan() { return jurusan; } public void setJurusa
n(String jurusan) { this.jurusan = jurusan; } public int getTahunmasuk() { retur
n thnMasuk; } public void setTahunmasuk(int tahunmasuk) { this.thnMasuk = tahunm
asuk; } public ArrayList<NilaiMataKuliah> getNilaiKuliah() { return daftarNilaiK
uliah; } public void setNilaiKuliah(ArrayList<NilaiMataKuliah> daftarNilaiKuliah
) { this.daftarNilaiKuliah = daftarNilaiKuliah; } public Double getIPK(){ double
ipk=0; double kumulatif = 0; int jumlahSKS=0; for (NilaiMataKuliah n : daftarNi
laiKuliah) { kumulatif = kumulatif + n.getBobot();

} }
jumlahSKS = jumlahSKS + n.getMataKuliah().getSks(); } if (kumulatif>0){ ipk = ku
mulatif/jumlahSKS; } return ipk;
Class MataKuliah package org.stth.latihan.database; public class private private
private private MataKuliah { long id; String kode; String nama; int sks;
public MataKuliah(){ } public MataKuliah(String kode, String nama, int sks) { su
per(); this.kode = kode; this.nama = nama; this.sks = sks; } public long getId()
{ return id; } public void setId(long id) { this.id = id; } public String getKo
de() { return kode; } public void setKode(String kode) { this.kode = kode; } pub
lic String getNama() { return nama; } public void setNama(String nama) { this.na
ma = nama; } public int getSks() { return sks; } public void setSks(int sks) { t
his.sks = sks; } }

Class NilaiMataKuliah package org.stth.latihan.database; public class NilaiMataK


uliah { public final static int SEMESTER_GANJIL=1; public final static int SEMES
TER_GENAP=2; public final static int SEMESTER_PENDEK=3; private int id; private
Mahasiswa mahasiswa; private MataKuliah mataKuliah; private int thnAmbil; privat
e int semester; private char nilai; public NilaiMataKuliah(){ } public NilaiMata
Kuliah(Mahasiswa mahasiswa, MataKuliah mataKuliah, int thnAmbil, char nilai) { s
uper(); this.mahasiswa = mahasiswa; this.mataKuliah = mataKuliah; this.thnAmbil
= thnAmbil; this.nilai = nilai; } public int getId() { return id; } public void
setId(int id) { this.id = id; } public Mahasiswa getMahasiswa() { return mahasis
wa; } public void setMahasiswa(Mahasiswa mahasiswa) { this.mahasiswa = mahasiswa
; } public MataKuliah getMataKuliah() { return mataKuliah; } public void setMata
Kuliah(MataKuliah mataKuliah) { this.mataKuliah = mataKuliah; } public int getTh
nAmbil() { return thnAmbil; }

public void setThnAmbil(int thnAmbil) { this.thnAmbil = thnAmbil; } public int g


etSemester() { return semester; } public void setSemester(int semester) { this.s
emester = semester; } public char getNilai() { return nilai; } public void setNi
lai(char nilai) { if (nilai=='A'||nilai=='B'||nilai=='C'||nilai=='D'){ this.nila
i = nilai; } else { this.nilai ='E'; } } public double getBobot(){ switch (this.
nilai) { case 'A': return 4.0; case 'B': return 3.0; case 'C': return 2.0; case
'D': return 1.0; default: return 0; } } public boolean isLulus(){ if (nilai=='A'
||nilai=='B'||nilai=='C'){ return true; } return false; } }
5.2.4
Class Data Access Object (DAO)
Setelah kita membuat class untuk keperluan koneksi ke database (ConnectionFactor
y) dan class untuk entitas (Mahasiswa,MataKuliah dan NilaiMataKuliah), selanjutn
ya kita akan membuat class yang akan menjadi jembatan antara data (record) pada
database dengan object pada kode program kita. Class ini disebut dengan Data Acc
ess Object (DAO). Class DAO yang kita buat bertanggungjawab menyediakan fasilita
s untuk menyimpan, membaca, mengubah dan menghapus data yang ada pada tabel-tabe
l yang kita miliki. Setiap entitas yang kita miliki akan memiliki DAO masing-mas
ing. Ini berarti kita akan memiliki 3 class DAO masing-masing untuk entitas Maha
siswa, MataKuliah dan NilaiMataKuliah. Class-class

DAO tersebut nantinya NilaiMataKuliahDAO.


akan
kita
beri
nama
MahasiswaDAO,
MataKuliahDAO
dan
Setiap class akan bertanggung jawab untuk menyediakan fasilitas : 1. Insert, men
yimpan object baru menjadi record baru pada database 2. Update, menyimpan peruba
han nilai object pada database 3. Load, membaca record pada database kemudian me
ngubahnya menjadi object, fungsi load dapat dibuat beberapa versi, misalnya : lo
ad berdasarkan nilai field tertentu, load keseluruhan, dsb. 4. Delete, menghapus
record pada database Untuk lebih memahami fasilitas tersebut, akan disajikan cu
plikan kode dari class MataKuliahDAO. Kita akan membahas setiap kode dan peranny
a pada class DAO yang kita buat. Connection connection = null; PreparedStatement
ptmt = null; ResultSet resultSet = null; Ketiga baris ini adalah baris deklaras
i variabel utama yang akan digunakan pada class DAO yang kita miliki. Variabel c
onnection adalah variabel yang berisi koneksi ke database. Variabel ptmt merupak
an variabel untuk menampung prepared statement, perintah berupa SQL query yang d
ieksekusi pada database. Variabel terakhir yakni resultSet merupakan variabel un
tuk menampung hasil eksekusi SQL query pada database. private Connection getConn
ection() throws SQLException { Connection conn; conn = ConnectionFactory.getInst
ance().getConnection(); return conn; } Method ini bertugas menyiapkan koneksi de
ngan memanfaatkan class ConnectionFactory. Pada class DAO kita, method ini akan
digunakan untuk mengisi variabel connection. public void insert(MataKuliah matku
l) { try { String queryString = "INSERT INTO matakuliah(kode, nama, sks) VALUES(
?,?,?)"; connection = getConnection(); ptmt = connection.prepareStatement(queryS
tring); ptmt.setString(1, matkul.getKode()); ptmt.setString(2, matkul.getNama())
; ptmt.setInt(3, matkul.getSks()); ptmt.executeUpdate(); } catch (SQLException e
) { e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.close(); if (c
onnection != null) connection.close(); } catch (SQLException e) { e.printStackTr
ace(); } catch (Exception e) { e.printStackTrace(); }

} } Method ini bertugas menyimpan objek MataKuliah menjadi record baru pada data
base. Perhatikan bahwa SQL Query yang dieksekusi melalui prepared statement yang
ada adalah SQL Query bertipe Insert. Tanda '?' pada sintaks utama Insert diisi
dengan nilai konversi dari object MataKuliah yang akan disimpan yakni kode, nama
dan nilai sks. Nilai id tidak diisi karena tipe id pada tabel matakuliah bertip
e auto increment yang berarti ia terisi otomatis dengan nilai yang terus meningk
at (+1). Method ini dibungkus dengan blok try-catch-final untuk menangkap bila a
da terjadi error dengan tipe SQLException, dengan blok final berisi perintah unt
uk mencek dan menutup koneksi public void update(MataKuliah matkul) { try { Stri
ng queryString = "update matakuliah set kode=?, nama=?, sks=? where id=?"; conne
ction = getConnection(); ptmt = connection.prepareStatement(queryString); ptmt.s
etString(1, matkul.getKode()); ptmt.setString(2, matkul.getNama()); ptmt.setInt(
3, matkul.getSks()); ptmt.setLong(4, matkul.getId()); ptmt.executeUpdate(); } ca
tch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt != null)
ptmt.close(); if (connection != null) connection.close(); } catch (SQLException
e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
Method ini bertugas mengupdate record matakuliah tertentu pada database. Perinta
h ini dilakukan pada program bila variabel object MataKuliah yang sebelumnya dil
oad dari database mengalami perubahan nilai sehingga padanannya pada tabel matak
uliah juga perlu diubah nilainya. Perhatikan bahwa SQL Query yang dieksekusi mel
alui prepared statement yang ada adalah SQL Query bertipe Update. Pada query ini
id dari object matakuliah disertakan sebagai parameter karena ia merupakan prim
ary key record yang akan diupdate. public void delete(MataKuliah matkul) { try {
String queryString = "delete from matakuliah where id=?"; connection = getConne
ction(); ptmt = connection.prepareStatement(queryString); ptmt.setLong(1, matkul
.getId());

ptmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally


{ try { if (ptmt != null) ptmt.close(); if (connection != null) connection.close
(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.pr
intStackTrace(); } } } Method ini bertugas menghapus record matakuliah tertentu
pada database. Perhatikan bahwa SQL Query yang dieksekusi melalui prepared state
ment yang ada adalah SQL Query bertipe Delete. Pada query ini id dari object mat
akuliah disertakan sebagai parameter karena ia merupakan primary key record yang
akan dihapus. public MataKuliah getById(int id) { try { String queryString = "s
elect kode,nama,sks,id from matakuliah where connection = getConnection(); ptmt
= connection.prepareStatement(queryString); ptmt.setInt(1, id); ResultSet rs = p
tmt.executeQuery(); while (rs.next()) { MataKuliah mk = new MataKuliah(); mk.set
Kode(rs.getString(1)); mk.setNama(rs.getString(2)); mk.setSks(rs.getInt(3)); mk.
setId(rs.getLong(4)); return mk; } } catch (SQLException e) { e.printStackTrace(
); } finally { try { if (ptmt != null) ptmt.close(); if (connection != null) con
nection.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Except
ion e) { e.printStackTrace(); } } return null;
id=?";

} Method ini bertugas meload record matakuliah tertentu dari database berdasarka
n id matakuliah. Tipe keluaran dari method ini adalah sebuah object MataKuliah.
Perhatikan bahwa SQL Query yang dieksekusi melalui prepared statement yang ada a
dalah SQL Query bertipe Select. Hasil dari eksekusi berupa ResultSet kemudian di
transformasi menjadi object MataKuliah yang kemudian menjadi keluaran method ini
.
public MataKuliah getByKode(String kode) { try { String queryString = "select ko
de,nama,sks,id from matakuliah where kode=?"; connection = getConnection(); ptmt
= connection.prepareStatement(queryString); ptmt.setString(1, kode); ResultSet
rs = ptmt.executeQuery(); while (rs.next()) { MataKuliah mk = new MataKuliah();
mk.setKode(rs.getString(1)); mk.setNama(rs.getString(2)); mk.setSks(rs.getInt(3)
); mk.setId(rs.getLong(4)); return mk; } } catch (SQLException e) { e.printStack
Trace(); } finally { try { if (ptmt != null) ptmt.close(); if (connection != nul
l) connection.close(); } catch (SQLException e) { e.printStackTrace(); } catch (
Exception e) { e.printStackTrace(); } } return null;
}
Method ini bertugas meload record matakuliah tertentu dari database berdasarkan
kode matakuliah. Tipe keluaran dari method ini adalah sebuah object MataKuliah.
Perhatikan bahwa SQL Query yang dieksekusi melalui prepared statement yang ada a
dalah SQL Query bertipe Select. Hasil dari eksekusi berupa ResultSet kemudian di
transformasi menjadi object MataKuliah yang kemudian menjadi keluaran method ini
.
public ArrayList<MataKuliah> getAll() { ArrayList<MataKuliah> listMatkul = new A
rrayList<MataKuliah>(); try { String queryString = "select kode,nama,sks,id from
matakuliah order

by kode"; connection = getConnection(); ptmt = connection.prepareStatement(query


String); ResultSet rs = ptmt.executeQuery(); while (rs.next()) { MataKuliah mk =
new MataKuliah(); mk.setKode(rs.getString(1)); mk.setNama(rs.getString(2)); mk.
setSks(rs.getInt(3)); mk.setId(rs.getLong(4)); listMatkul.add(mk); } } catch (SQ
LException e) { e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.cl
ose(); if (connection != null) connection.close(); } catch (SQLException e) { e.
printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } return listM
atkul; } Method ini bertugas meload seluruh record matakuliah dari database dan
mengeluarkannya dalam bentuk ArrayList. SQL Query yang dieksekusi melalui prepar
ed statement yang ada adalah SQL Query bertipe Select. Hasil dari eksekusi berup
a ResultSet kemudian ditransformasi menjadi daftar object MataKuliah dalam Array
List yang kemudian menjadi keluaran method ini. Bentuk akhir dari class MataKuli
ahDAO dapat dilihat pada kode berikut ini. Buatlah class yang sama pada project
anda. package org.stth.latihan.database; import import import import import java
.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLExc
eption; java.util.ArrayList;
public class MataKuliahDAO { Connection connection = null; PreparedStatement ptm
t = null; ResultSet resultSet = null; private Connection getConnection() throws
SQLException { Connection conn; conn = ConnectionFactory.getInstance().getConnec
tion(); return conn;

} public void insert(MataKuliah matkul) { try { String queryString = "INSERT INT


O matakuliah(kode, nama, sks) VALUES(?,?,?)"; connection = getConnection(); ptmt
= connection.prepareStatement(queryString); ptmt.setString(1, matkul.getKode())
; ptmt.setString(2, matkul.getNama()); ptmt.setInt(3, matkul.getSks()); ptmt.exe
cuteUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { try {
if (ptmt != null) ptmt.close(); if (connection != null) connection.close(); } ca
tch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStack
Trace(); } } } public void update(MataKuliah matkul) { try { String queryString
= "update matakuliah set kode=?, nama=?, sks=? where id=?"; connection = getConn
ection(); ptmt = connection.prepareStatement(queryString); ptmt.setString(1, mat
kul.getKode()); ptmt.setString(2, matkul.getNama()); ptmt.setInt(3, matkul.getSk
s()); ptmt.setLong(4, matkul.getId()); ptmt.executeUpdate(); } catch (SQLExcepti
on e) { e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.close(); i
f (connection != null) connection.close(); } catch (SQLException e) { e.printSta
ckTrace(); } catch (Exception e) { e.printStackTrace(); } } }

public void delete(MataKuliah matkul) { try { String queryString = "delete from


matakuliah where id=?"; connection = getConnection(); ptmt = connection.prepareS
tatement(queryString); ptmt.setLong(1, matkul.getId()); ptmt.executeUpdate(); }
catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt != null
) ptmt.close(); if (connection != null) connection.close(); } catch (SQLExceptio
n e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } p
ublic MataKuliah getById(int id) { try { String queryString = "select kode,nama,
sks,id from matakuliah where connection = getConnection(); ptmt = connection.pre
pareStatement(queryString); ptmt.setInt(1, id); ResultSet rs = ptmt.executeQuery
(); while (rs.next()) { MataKuliah mk = new MataKuliah(); mk.setKode(rs.getStrin
g(1)); mk.setNama(rs.getString(2)); mk.setSks(rs.getInt(3)); mk.setId(rs.getLong
(4)); return mk; } } catch (SQLException e) { e.printStackTrace(); } finally { t
ry { if (ptmt != null) ptmt.close(); if (connection != null) connection.close();
} catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.print
StackTrace(); } } return null;
id=?";

} public MataKuliah getByKode(String kode) { try { String queryString = "select


kode,nama,sks,id from matakuliah where connection = getConnection(); ptmt = conn
ection.prepareStatement(queryString); ptmt.setString(1, kode); ResultSet rs = pt
mt.executeQuery(); while (rs.next()) { MataKuliah mk = new MataKuliah(); mk.setK
ode(rs.getString(1)); mk.setNama(rs.getString(2)); mk.setSks(rs.getInt(3)); mk.s
etId(rs.getLong(4)); return mk; } } catch (SQLException e) { e.printStackTrace()
; } finally { try { if (ptmt != null) ptmt.close(); if (connection != null) conn
ection.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Excepti
on e) { e.printStackTrace(); } } return null; } public ArrayList<MataKuliah> get
All() { ArrayList<MataKuliah> listMatkul = new ArrayList<MataKuliah>(); try { St
ring queryString = "select kode,nama,sks,id from matakuliah order by kode"; conn
ection = getConnection(); ptmt = connection.prepareStatement(queryString); Resul
tSet rs = ptmt.executeQuery(); while (rs.next()) { MataKuliah mk = new MataKulia
h(); mk.setKode(rs.getString(1)); mk.setNama(rs.getString(2)); mk.setSks(rs.getI
nt(3)); mk.setId(rs.getLong(4)); listMatkul.add(mk); } } catch (SQLException e)
{ e.printStackTrace(); } finally { try {
kode=?";

if (ptmt != null) ptmt.close(); if (connection != null) connection.close(); } ca


tch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStack
Trace(); } } return listMatkul; } }
Dengan cara yang sama class DAO untuk entitas Mahasiswa dapat kita susun sebagai
berikut. Salin kode bersangkutan pada project anda. package org.stth.latihan.da
tabase; import import import import import java.sql.Connection; java.sql.Prepare
dStatement; java.sql.ResultSet; java.sql.SQLException; java.util.ArrayList;
public class MahasiswaDAO { private Connection connection = null; private Prepar
edStatement ptmt = null; private Connection getConnection() throws SQLException
{ Connection conn; conn = ConnectionFactory.getInstance().getConnection(); retur
n conn; } public void insert(Mahasiswa mahasiswa) { try { String queryString = "
INSERT INTO mahasiswa(nim, nama, jurusan, thnmasuk) VALUES(?,?,?,?)"; connection
= getConnection(); ptmt = connection.prepareStatement(queryString); ptmt.setStr
ing(1, mahasiswa.getNim()); ptmt.setString(2, mahasiswa.getNama()); ptmt.setStri
ng(3, mahasiswa.getJurusan()); ptmt.setInt(4, mahasiswa.getTahunmasuk()); ptmt.e
xecuteUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { try
{ if (ptmt != null) ptmt.close(); if (connection != null) connection.close();

} catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printS


tackTrace(); } } } public void update(Mahasiswa mahasiswa) { try { String queryS
tring = "update mahasiswa set nim=?, nama=?, jurusan=?, thnmasuk=? where id=?";
connection = getConnection(); ptmt = connection.prepareStatement(queryString); p
tmt.setString(1, mahasiswa.getNim()); ptmt.setString(2, mahasiswa.getNama()); pt
mt.setString(3, mahasiswa.getJurusan()); ptmt.setInt(4, mahasiswa.getTahunmasuk(
)); ptmt.setLong(5, mahasiswa.getId()); ptmt.executeUpdate(); } catch (SQLExcept
ion e) { e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.close();
if (connection != null) connection.close(); } catch (SQLException e) { e.printSt
ackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
public void delete(Mahasiswa mahasiswa) { try { String queryString = "delete fro
m mahasiswa where id=?"; connection = getConnection(); ptmt = connection.prepare
Statement(queryString); ptmt.setLong(1, mahasiswa.getId()); ptmt.executeUpdate()
; } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt !=
null) ptmt.close(); if (connection != null) connection.close(); } catch (SQLExce
ption e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace();

} } } public ArrayList<Mahasiswa> getAll() { ArrayList<Mahasiswa> listMahasiswa


= new ArrayList<Mahasiswa>(); try { String queryString = "select id,nim,nama,jur
usan,thnmasuk from mahasiswa order by nim"; connection = getConnection(); ptmt =
connection.prepareStatement(queryString); ResultSet rs = ptmt.executeQuery(); w
hile (rs.next()) { Mahasiswa s = new Mahasiswa(); s.setId(rs.getLong(1)); s.setN
im(rs.getString(2)); s.setNama(rs.getString(3)); s.setJurusan(rs.getString(4));
s.setTahunmasuk(rs.getInt(5)); listMahasiswa.add(s); } } catch (SQLException e)
{ e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.close(); if (con
nection != null) connection.close(); } catch (SQLException e) { e.printStackTrac
e(); } catch (Exception e) { e.printStackTrace(); } } return listMahasiswa; } pu
blic Mahasiswa getByNim(String nim) { try { String queryString = "select id,nim,
nama,jurusan,thnmasuk from mahasiswa where nim=?"; connection = getConnection();
ptmt = connection.prepareStatement(queryString); ptmt.setString(1, nim); Result
Set rs = ptmt.executeQuery(); while (rs.next()) { Mahasiswa s = new Mahasiswa();
s.setId(rs.getLong(1)); s.setNim(rs.getString(2)); s.setNama(rs.getString(3));
s.setJurusan(rs.getString(4)); s.setTahunmasuk(rs.getInt(5)); return s; }

} public Mahasiswa getById(int id) {


} catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt != nu
ll) ptmt.close(); if (connection != null) connection.close(); } catch (SQLExcept
ion e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } r
eturn null;
try { String queryString = "select id,nim,nama,jurusan,thnmasuk from mahasiswa w
here id=?"; connection = getConnection(); ptmt = connection.prepareStatement(que
ryString); ptmt.setInt(1, id); ResultSet rs = ptmt.executeQuery(); while (rs.nex
t()) { Mahasiswa s = new Mahasiswa(); s.setId(rs.getLong(1)); s.setNim(rs.getStr
ing(2)); s.setNama(rs.getString(3)); s.setJurusan(rs.getString(4)); s.setTahunma
suk(rs.getInt(5)); return s; } } catch (SQLException e) { e.printStackTrace(); }
finally { try { if (ptmt != null) ptmt.close(); if (connection != null) connect
ion.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception
e) { e.printStackTrace(); } } return null; } }
Sedangkan DAO untuk entitas NilaiMataKuliah dapat kita susun sebagai berikut. Sa
lin kode bersangkutan pada class yang sama pada project anda.

package org.stth.latihan.database; import import import import import java.sql.C


onnection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException
; java.util.ArrayList;
public class NilaiMataKuliahDAO { Connection connection = null; PreparedStatemen
t ptmt = null; ResultSet resultSet = null; private Connection getConnection() th
rows SQLException { Connection conn; conn = ConnectionFactory.getInstance().getC
onnection(); return conn; } public void insert(NilaiMataKuliah nmk) { try { Stri
ng queryString = "INSERT INTO nilaimatakuliah(idmahasiswa,idmatakuliah, thnambil
, semester,nilai) VALUES(?,?,?,?,?)"; connection = getConnection(); ptmt = conne
ction.prepareStatement(queryString); ptmt.setLong(1, nmk.getMahasiswa().getId())
; ptmt.setLong(2, nmk.getMataKuliah().getId()); ptmt.setInt(3, nmk.getThnAmbil()
); ptmt.setInt(4, nmk.getSemester()); ptmt.setString(5, String.valueOf(nmk.getNi
lai())); ptmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }
finally { try { if (ptmt != null) ptmt.close(); if (connection != null) connect
ion.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception
e) { e.printStackTrace(); } } } public void update(NilaiMataKuliah nmk) { try {
String queryString = "update nilaimatakuliah set nimmahasiswa=?, kodematakuliah=
?, thnambil=?, semester=?, nilai=?" + " where id=?"; connection = getConnection(
);

ptmt = connection.prepareStatement(queryString); ptmt.setString(1, nmk.getMahasi


swa().getNim()); ptmt.setString(2, nmk.getMataKuliah().getKode()); ptmt.setInt(3
, nmk.getThnAmbil()); ptmt.setInt(4, nmk.getSemester()); ptmt.setString(5, Strin
g.valueOf(nmk.getNilai())); ptmt.setInt(6, nmk.getId()); ptmt.executeUpdate(); }
catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt != nul
l) ptmt.close(); if (connection != null) connection.close(); } catch (SQLExcepti
on e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
public void delete(NilaiMataKuliah nmk) { try { String queryString = "delete fro
m nilaimatakuliah where id=?"; connection = getConnection(); ptmt = connection.p
repareStatement(queryString); ptmt.setInt(1, nmk.getId()); ptmt.executeUpdate();
} catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt != n
ull) ptmt.close(); if (connection != null) connection.close(); } catch (SQLExcep
tion e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }
} public ArrayList<NilaiMataKuliah> getAll() { ArrayList<NilaiMataKuliah> listNm
k = new ArrayList<NilaiMataKuliah>(); try { String queryString = "select id,idma
hasiswa,idmatakuliah,thnambil,semester,nilai from nilaimatakuliah";

} public ArrayList<NilaiMataKuliah> getByMahasiswa(Mahasiswa mh) { ArrayList<Nil


aiMataKuliah> listNmk = new ArrayList<NilaiMataKuliah>(); try { String queryStri
ng = "select id,idmahasiswa,idmatakuliah,thnambil,semester,nilai from nilaimatak
uliah where idmahasiswa=?"; connection = getConnection(); ptmt = connection.prep
areStatement(queryString); ptmt.setLong(1, mh.getId()); ResultSet rs = ptmt.exec
uteQuery(); while (rs.next()) { MahasiswaDAO mhdao = new MahasiswaDAO(); MataKul
iahDAO mkdao = new MataKuliahDAO(); mh = mhdao.getById(rs.getInt(2)); MataKuliah
mk = mkdao.getById(rs.getInt(3)); NilaiMataKuliah nmk = new NilaiMataKuliah();
nmk.setId(rs.getInt(1)); nmk.setMahasiswa(mh); nmk.setMataKuliah(mk); nmk.setThn
Ambil(rs.getInt(4)); nmk.setSemester(rs.getInt(5)); nmk.setNilai(rs.getString(6)
.charAt(0)); listNmk.add(nmk);
connection = getConnection(); ptmt = connection.prepareStatement(queryString); R
esultSet rs = ptmt.executeQuery(); while (rs.next()) { MahasiswaDAO mhdao = new
MahasiswaDAO(); MataKuliahDAO mkdao = new MataKuliahDAO(); Mahasiswa mh = mhdao.
getById(rs.getInt(2)); MataKuliah mk = mkdao.getById(rs.getInt(3)); NilaiMataKul
iah nmk = new NilaiMataKuliah(); nmk.setId(rs.getInt(1)); nmk.setMahasiswa(mh);
nmk.setMataKuliah(mk); nmk.setThnAmbil(rs.getInt(4)); nmk.setSemester(rs.getInt(
5)); nmk.setNilai(rs.getString(6).charAt(0)); listNmk.add(nmk); } } catch (SQLEx
ception e) { e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.close
(); if (connection != null) connection.close(); } catch (SQLException e) { e.pri
ntStackTrace(); } catch (Exception e) { e.printStackTrace(); } } return listNmk;

} public ArrayList<NilaiMataKuliah> getByMataKuliah(MataKuliah mk) { ArrayList<N


ilaiMataKuliah> listNmk = new ArrayList<NilaiMataKuliah>(); try { String querySt
ring = "select id,idmahasiswa,idmatakuliah,thnambil,semester,nilai from nilaimat
akuliah where idmatakuliah=?"; connection = getConnection(); ptmt = connection.p
repareStatement(queryString); ptmt.setLong(1, mk.getId()); ResultSet rs = ptmt.e
xecuteQuery(); while (rs.next()) { MahasiswaDAO mhdao = new MahasiswaDAO(); Mata
KuliahDAO mkdao = new MataKuliahDAO(); Mahasiswa mh = mhdao.getById(rs.getInt(2)
); mk = mkdao.getById(rs.getInt(3)); NilaiMataKuliah nmk = new NilaiMataKuliah()
; nmk.setId(rs.getInt(1)); nmk.setMahasiswa(mh); nmk.setMataKuliah(mk); nmk.setT
hnAmbil(rs.getInt(4)); nmk.setSemester(rs.getInt(5)); nmk.setNilai(rs.getString(
6).charAt(0)); listNmk.add(nmk); } } catch (SQLException e) { e.printStackTrace(
); } finally { try { if (ptmt != null) ptmt.close(); if (connection != null) con
nection.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Except
ion e) { e.printStackTrace(); } } return listNmk;
} } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt !=
null) ptmt.close(); if (connection != null) connection.close(); } catch (SQLExce
ption e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }
return listNmk;

mk) {
} public NilaiMataKuliah getByMahasiswaAndMatakuliah(Mahasiswa mh, MataKuliah
try { String queryString = "select id,idmahasiswa,idmatakuliah,thnambil,semester
,nilai from nilaimatakuliah where idmahasiswa=? and idmatakuliah=?"; connection
= getConnection(); ptmt = connection.prepareStatement(queryString); ptmt.setLong
(1, mh.getId()); ptmt.setLong(2, mk.getId()); ResultSet rs = ptmt.executeQuery()
; while (rs.next()) { MahasiswaDAO mhdao = new MahasiswaDAO(); MataKuliahDAO mkd
ao = new MataKuliahDAO(); mh = mhdao.getById(rs.getLong(2)); mk = mkdao.getById(
rs.getLong(3)); NilaiMataKuliah nmk = new NilaiMataKuliah(); nmk.setId(rs.getInt
(1)); nmk.setMahasiswa(mh); nmk.setMataKuliah(mk); nmk.setThnAmbil(rs.getInt(4))
; nmk.setSemester(rs.getInt(5)); nmk.setNilai(rs.getString(6).charAt(0)); return
nmk; } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (pt
mt != null) ptmt.close(); if (connection != null) connection.close(); } catch (S
QLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(
); } } return null; } }
5.3
Mencoba program
Pada tahap ini, kita sudah membahas class-class utama yakni class untuk koneksi,
class entitas dan class DAO untuk masing-masing entitas. Sebelum melanjutkan ke
tahap menguji kode program yang telah kita buat, pastikan bahwa class-class dim
aksud telah ada anda salin ke project anda. Gunakan daftar class pada gambar ber
ikut sebagai panduan.

Gambar 12: Daftar class pada tutorial akses database menggunakan JDBC Jika anda
telah memastikan bahwa class-class tersebut sudah ada pada project anda, buatlah
sebuah class baru dengan nama 'TestDAO'. Class ini akan kita gunakan untuk menc
oba koneksi ke database dan menguji kode yang telah kita bangun. Skenario penguj
ian : Tabel-tabel pada database yang telah kita buat telah masing-masing telah m
emiliki record data. Tabel mahasiswa memiliki 3 record, tabel matakuliah memilik
i 4 record dan tabel nilaimatakuliah yang merupakan perkawinan antara tabel maha
siswa dan matakuliah telah dilengkapi dengan 12 data nilai mahasiswa (3 X 4). Ki
ta akan membuat kode program yang akan menambahkan satu record mahasiswa, satu m
ata kuliah baru dan satu record nilai mata kuliah, kemudian menampilkan ipk selu
ruh mahasiswa yang ada di dalam database. Berikut adalah cuplikan kode untuk pen
gujian dimaksud. public static void main(String[] args) { tambahDataMahasiswa();
tambahDataMataKuliah(); tambahDataNilaiMataKuliah(); cetakIPK(); bersihkanData(
); } Ini adalah blok utama pengujian yang akan memanggil method lain secara beru
rutan. Perhatikan bahwa pada akhir pengujian kita melakukan pembersihan data yan
g dimaksudkan untuk membuang data-data yang kita ciptakan pada database selama p
engujian (mengembalikan database ke posisi sebelum pengujian) static void tambah
DataMahasiswa(){ MahasiswaDAO mahasiswaDAO = new MahasiswaDAO(); //siapkan data
mahasiswa baru Mahasiswa m = new Mahasiswa("Udin Gaul", "01210995", Informatika"
, 2010); //simpan data ke dalam database mahasiswaDAO.insert(m); //ambil kembali
data dari database m = mahasiswaDAO.getByNim("01210995"); //cek hasil pada cons
ole
"Teknik

}
System.out.println(m.getId()+":"+m.getNama());
Method ini membuat object Mahasiswa kemudian menyimpannya ke dalam database, dat
a yang sama kemudian diload ulang untuk pengecekan. static void tambahDataMataKu
liah(){ MataKuliahDAO mataKuliahDAO = new MataKuliahDAO(); //siapkan data mata k
uliah baru MataKuliah mk = new MataKuliah("PWB", "Pemrograman Berbasis Web", 3);
//simpan data ke dalam database mataKuliahDAO.insert(mk); //ambil data dari dat
abase mk = mataKuliahDAO.getByKode("PWB"); //cek hasil pada console System.out.p
rintln(mk.getId()+":"+mk.getNama()); } Method ini membuat object MataKuliah kemu
dian menyimpannya ke dalam database, data yang sama kemudian diload ulang untuk
pengecekan. static void tambahDataNilaiMataKuliah(){ MahasiswaDAO mahasiswaDAO =
new MahasiswaDAO(); Mahasiswa m = mahasiswaDAO.getByNim("01210995"); MataKuliah
DAO mataKuliahDAO = new MataKuliahDAO(); MataKuliah mk = mataKuliahDAO.getByKode
("PWB"); NilaiMataKuliahDAO nilaiMataKuliahDAO = new NilaiMataKuliahDAO(); //sia
pkan data nilai mata kuliah baru NilaiMataKuliah nmk = new NilaiMataKuliah(m, mk
, 2012, 'A'); //simpan ke dalam database nilaiMataKuliahDAO.insert(nmk); //ambil
dari database nmk = nilaiMataKuliahDAO.getByMahasiswaAndMatakuliah(m, mk); //ce
k hasil pada console System.out.println(nmk.getId()+":"+nmk.getMahasiswa().getNa
ma()+":" +nmk.getMataKuliah().getNama() +":"+nmk.getNilai()); } Method ini membu
at object NilaiMataKuliah dari object Mahasiswa dan NilaiMataKuliah sebelumnya d
an menyimppannya ke dalam database. Load kemudian ulang dilakukan untuk memastik
an data tersebut telah tersimpan. static void cetakIPK(){ MahasiswaDAO mahasiswa
DAO = new MahasiswaDAO(); NilaiMataKuliahDAO nmkDAO = new NilaiMataKuliahDAO();
ArrayList<Mahasiswa> ms = new ArrayList<Mahasiswa>(); ms = mahasiswaDAO.getAll()
; for (Mahasiswa mahasiswa : ms) { ArrayList<NilaiMataKuliah> listNilai = nmkDAO
.getByMahasiswa(mahasiswa); mahasiswa.setNilaiKuliah(listNilai); System.out.prin
tln(mahasiswa.getNim()+" "+mahasiswa.getNama()+" memiliki IPK "+mahasiswa.getIPK
());

} } Method ini mencetak data seluruh mahasiswa pada database sekaligus menampilk
an IPK-nya, termasuk untuk mahasiswa yang kita masukkan pada method sebelumnya.
static void bersihkanData(){ MahasiswaDAO mahasiswaDAO = new MahasiswaDAO(); Mat
aKuliahDAO mataKuliahDAO = new MataKuliahDAO(); NilaiMataKuliahDAO nmkDAO = new
NilaiMataKuliahDAO(); Mahasiswa m = mahasiswaDAO.getByNim("01210995"); MataKulia
h mk = mataKuliahDAO.getByKode("PWB"); NilaiMataKuliah nmk = nmkDAO.getByMahasis
waAndMatakuliah(m, mk); nmkDAO.delete(nmk); mahasiswaDAO.delete(m); mataKuliahDA
O.delete(mk); System.out.println("data pengujian telah dibersihkan"); } Method i
ni membersihkan seluruh data yang telah kita ciptakan selama pengujian Gabung me
thod tersebut dalam sebuah Class dan jalankan. Jika console tidak menampilkan er
ror dan hasilnya sama dengan output berikut, maka anda telah sukses membuat prog
ram yang terhubung dengan sebuah database server.
Gambar 13: Hasil standar pengujian kode untuk mengakses database
5.4
Menggunakan database lain
Jika anda menggunakan database selain MySQL maka anda hanya perlu mengganti driv
er JDBC dengan driver yang sesuai dengan database anda, kemudian mengganti param
eter url database dan nama class JDBC yang digunakan pada class ConnectionFactor
y. Berikut adalah beberapa alamat di internet yang dapat anda gunakan untuk refe
rensi bila anda kebetulan menggunakan database selain MySQL. 1. Oracle, http://w
ww.oracle.com/technetwork/database/enterprise-edition/jdbc-112010090769.html 2.
Microsoft SQL Server, http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx 3.
PostgreSQL, http://jdbc.postgresql.org/

6
Tutorial Desktop Application dengan Java GUI (Swing)

7
Tutorial Web Application dengan Vaadin

8
Tutorial Mobile Application (Android)

Anda mungkin juga menyukai