Pemrograman Berorientasi Obyek Lanjut (IT251) · PDF fileprogram harus membangun koneksi ke...

Post on 05-Feb-2018

234 views 2 download

Transcript of Pemrograman Berorientasi Obyek Lanjut (IT251) · PDF fileprogram harus membangun koneksi ke...

Pemrograman Berorientasi Obyek Lanjut (IT251)

Ramos Somya, S.Kom., M.Cs.

Komunikasi aplikasi dengan databaseAplikasi dan sistem database tidak menggunakanbahasa dan mekanisme yang sama. Sehinggaprogram harus membangun koneksi ke databasetarget sebelum dapat menjalankan statement SQL.

Aplikasi Java tidak dapat mengakses data padadatabase secara langsung, JDBC merupakaninterface yang menghubungkan antara aplikasi Javadan database.

JAVA applicationDatabase

JDBC – Java DataBase Connectivity Merupakan API (terdiri dari kumpulan class dan

method) untuk bekerja dengan database dalam javacode.

Tujuan Utama : untuk membuat java codeindependen dari database aktual yang digunakan.

JDBC menyediakan interface diatas berbagai modulkonektifitas database yang beragam

JDBC didesain untuk bekerja dengan cara yangsama terhadap berbagai relasional database.

JAVA Application JDBC

Oracle database

MS SQL Server

MySQL Server

Setiap database mempunyai driver masing-masing JDBC driver manager berkomunikasi dengan driver

yang selanjutnya akan berkomunikasi secaralangsung ke database

JDBC API- Menyembunyikan detail implementasi- Murni dalam code java- Tidak menyembunyikan implementasi SQL antara

berbagai DBMS

Konversi SQL data types ke Java data types:

Integer – int

Varchar2 – String

Real – float

Bit – boolean

Date – java.sql.Date

Time, TimeStamp – java.sql.Timestamp;

Gunakan JDBC driver yang tepat: Oracle: /usr/local/oracle/jdbc/lib/ojdbc14.jar on eniac

or the Oracle web site. MySQL:

http://dev.mysql.com/downloads/connector/j/ Netbeans:

built in

Tambahkan file ke Java classpath: Set CLASSPATH environment variable on CLI

OR

Within your IDE

1. Load driver2. Tentukan URL koneksi3. Membangun koneksi4. Membuat objek statement5. Execute query6. Proses Result7. Menutup koneksi

Panggil class.forNameclass.forName(“oracle.jdbc.driver.OracleDriver) – untuk database oracle

class.forName(“com.mysql.jdbc.Driver”) –untuk mysql

Contohtry {

Class.forName(“com.mysql.jdbc.Driver");

} catch (ClassNotFoundException cnfe) {

System.out.println(“Error loading driver: ” + cnfe);

}

MySQL on localhost: jdbc:mysql://localhost:3306/mysql

Bagian pertama dari URL (jdbc:mysql) spesifikterhadap dbms yang digunakan

Bagian kedua menjelaskan dimana server DBMSberada (localhost)

Bagian ketiga menjelaskan port number (1521, 3306-default)

Bagian terakhir menjelaskan nama database yangdigunakan (mysql)

Panggil DriverManager.getConnection(DbURL,username, password)

DbURL merupakan url koneksi yang kita buatsebelumnya.

Username and password merupakan parameteryang digunakan sesuai dengan value yang disetpada database server.

Objek statement sederhana:Statement statement =connection.createStatement();

3 tipe objek statement:

Statement

Prepared Statement

Callable Statement

Tulis query sebagai Java StringString query= “Select * from Users where age>21”;

Select query akan mengembalikan semuarecord/tuple yang memenuhi query.

Simpan dalam ResultSetContoh:ResultSet rs = statement.executeQuery(query);

Bagaimana query yang merubah database?String query= “Update Users set age=21 wherename=“John”;

panggil executeUpdate() untuk statements sepertiINSERT, UPDATE, DELETE, etc

Contoh:ResultSet rs = statement.executeUpdate(query);

ResultSet akan mengandung jumlah rows(baris)yang telah dimodifikasi oleh perintah update.

Bagaimana jika kita ingin menquery databasemenggunakan variabel dari user/program ?

Gunakan prepared statement Ganti nilai variabel dalam query string dengan

tanda ‘?’contoh:int age = 21;

String query= “Update Users set age=? where name=“John”;PreparedStatement st =

connection.prepareStatement(query);st.SetInt (1, age);

Hasil dari query disimpan dalam ResultSet. Direpresentasikan oleh tabel dengan baris dan

kolom. Untuk mengiterasi melalui tiap rows dari ResultSet:

while (rs.next()) {

String name = rs.getString(1);

int age = rs.getInt(“age”);

}

next() melangkah ke row berikutnya dalam ResultSet

2 cara untuk mendapatkan hasil dari ResultSet

Melalui posisi kolom

▪ Dimulai dari angka 1

▪ Dapat terjadi mismatch antara nomor kolom dalam result set dan table asli

Melalui nama kolom

Panggil connection.close() ketika selesaimengakses database.

Open connection ke database menggunakanresource sistem.

Kita dapat kehabisan koneksi utamanya dalamlingkungan multi-user .

Menutup koneksi dapat tidak dilakukan kalaudatabase masih akan dioperasikan.

Model-view-controller (MVC) adalah sebuaharsitektur perangkat lunak, Pola desain MVCmemisah “logika domain” (logika aplikasi untukpengguna) dari antarmuka pengguna (input danpresentasi).

MVC juga memungkinkan pengembangan yangmandiri (pemisahan tugas programmer sesuai taskMVC) dan memudahkan dalam proses testing danmaintenance kode programnya, serta kode programyang dapat digunakan berulang di beberapa aplikasiyang mirip (reusable) .

Implementasi pola desain MVC dapat diterapkanpada aplikasi berbasis web maupun aplikasidesktop.