Modul PBO Java Untuk Pemula Aswian Editri S PDF
Modul PBO Java Untuk Pemula Aswian Editri S PDF
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
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
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 :
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
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()
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.
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
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
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');
} }
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; } }
} } 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());
} 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
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)