Sabtu, 12 Januari 2019

Komunikasi Dengan Database

Komunikasi Dengan Database




JAVA DATABASE CONECTIVITY (JDBC)

Sistem Basis Data pada Java

Database merupakan salah satu bagian inti dari Sistem Informasi yang menyimpan data untuk proses pengolahan nantinya. Agar aplikasi bisa mengakses data dari suatu database engine, maka diperlukan suatu mekanisme koneksi antara aplikasi dan database tersebut. Pada bahasa pemrograman java terdapat kumpulan kelas yang digunakan khusus untuk koneksi database.

Komponen database pada java mengikuti standar SQL (Structured Query Language), sehingga libraryfungsinya dapat ditemukan dalam package java.sql.* dan javax.sql.*.

Terdapat 3 langkah utama untuk melakukan koneksi ke database : (1) membuat koneksi sengan server database. (2) Membuat perintah dan mengirimkannya ke server database. (3) menerima dan mengolah hasil.

Untuk mendapatkan koneksi database, diperlukan 3 langkah, yaitu :
  1.  Menginstalasi driver database yang digunakan
  2.  menciptakan instance object dari server
  3.  melakukan registrasi koneksi ke database

Setelah berhasil dilakukan, maka kita hanya perlu melakukan registrasi koneksi, dan menciptakan koneksi melalui interface Connection berdasarkan URL disertai dengan username dan password database

PENGERTIAN

JDBC (Java database connectivity) adalah spesifikasi standar dari JavaSoft API (Aplication Programming Interface) yang memungkinkan program Java untuk mengakses sistem database manajemen. JDBC menyediakan methods untuk melakukan query dan modifikasi data pada RDBMS seperti Oracle, SQL Server, MySQL, dll menggunakan Driver Manager. JDBC mirip dengan ODBC (Open Database Connectivity), hanya saja JDBC spesifik digunakan untuk program Java. ODBC bersifat language independent.

JDBC memiliki beberapa kegunaan, yaitu membantu programmer untuk koneksi dengan data source, membantu mengirimkan query dan update statements ke database, dan menerima serta memroses hasil yang didapatkan dari database sesuai dengan query yang diberikan.Untuk melakukan koneksi ke suatu sumber data, diperlukan database driver yang akan menjadi jembatan antara Aplikasi dengan Database. Database driver ini bersifat spesifik untuk setiap sumber data. Misalnya, Database Driver MySQL hanya bisa digunakan untuk melakukan koneksi ke database MySQL, begitu juga dengan Database Driver PostgreSQL hanya untuk PostgreSQL.

Komponen utama JDBC

  1. Driver adalah komponen untuk menangani masalah komunikasi dengan server database.
  2. DriverManager adalah komponen untuk menangani objek driver.
  3. Connection adalah komponen yang menyimpan koneksi ke database.
  4. Statement adalah komponen yang menangani perintah SQL ke database.
  5. ResultSet adalah komponen yang menyimpan data hasil perintah ke database.
  6. SQLException adalah komponen untuk menangani kesalahan-kesalahan yang mungkin terjadi saat pengolahan database.


Memanggil Driver JDBC

Untuk menghubungkan database MySQL dengan Java, perlu dilakukan pemanggilan driver JDBC. Driver adalah sebuah library yang berisi perintah-perintah untuk berkomunikasi dengan server database.

Sebelum mulai menulis program, import terlebih dahulu package java.sql.*. karena di dalam library ini terdapat kelas-kelas seperti DriverManager, Connection, dan ResultSet.

import java.sql.*

Untuk memanggil driver JDBC bisa menggunakan

Class.forName(namaDriver);


atau

Class.forName(namaDriver).newInstance();

Keduanya bertujuan untuk registrasi Class Driver. Perintah tersebut dapat menghasilkan error bila driver tidak ditemukan, sehingga perlu dilakukan penanganan, menggunakan ClassNotFoundException.

try {

// perintah pemanggilan driver

} catch (ClassNotFoundException exc) {

// penanganan kesalahan

}


Membangun Koneksi

Setelah berhasil melakukan pemanggilan driver, maka dilanjutkan dengan membangun koneksi. Untuk membuat koneksi tidak perlu dengan menciptakan object baru. Karena pembuatan object telah dienkapsulasi pada kelas DriverManager. Jadi, untuk mendapatkan object hanya dengan syntax :

DriverManager.getConnection(url, username, password);
Sama seperti pemanggilan driver, perintah kali ini dapat menyebabkan error. Untuk itu, diperlukan penanganan. Namun, kali ini menggunakan SQLException, karena kesalahan yang mungkin terjadi ada di dalam database engine.

try {

Connection conn = DriverManager.getConnection(URL, username, password);

} catch (SQLException exc) {

// penanganan kesalahan

}


URL bisa dibuat dengan format : Jdbc:<DBServer>://[host]:[port]/<NamaDB>

Username : user pada server database

Password : password untuk user diatas


Membuat Object Statement

Statement merupakan objek interface yang diciptakan dari method Connection.createStatement().Objek Statement digunakan untuk penerimaan statement SQL tanpa parameter.

Perintah Statement :

Statement stat = Connection.createStatement();

Melakukan Eksekusi

Sekarang, objek statement telah dibuat dan sudah bisa digunakan untuk mengirim perintah SQL, kemudian mengeksekusinya. Untuk melakukan eksekusi, dibagi menjadi 2 bagian.
  1. Pertama, menggunakan method executeQuery(). Method ini dipakai untuk perintah SELECT,sehingga akan memberikan nilai kembalian dalam bentuk ResultSet.
  2. Kedua, menggunakan method executeUpdate(). Method ini dipakai pada perintah INSERT, UPDATE, dan DELETE. Untuk melakukan perintah DELETE :

PreparedStatement stat = conn.prepareStatement(perintah/query delete);

stat.executeUpdate();

Menerima hasil dan memprosesnya

Hasil statement akan memberikan hasil, jikaperintah yang digunakan adalah SELECT. Hasil kembalian berupa ResultSet.

ResultSet rs = stat.executeQuery(perintah SQL);

If( rs.next() ) {

// ambil nilai dan masukan ke dalam variabel

}


langkah-langkah diatas merupakan cara yang paling sederhana untuk melakukan akses database pada bahasa pemrograman Java.

EMPAT KOMPONEN PENTING DARI JDBC :

1. JDBC-API

JDBC-API menyediakan fasilitas untuk mengakses database relasional dari program berbahasa Java. Melalui komponen ini user dapat melakukan proses query dan perubahan data dalam database. JDBC-API memiliki package utama yang tersedia pada java.sql dan javax.sql.

2. JDBC Driver Manager

Merupakan komponen kelas utama yang mendefinisikan object yang mengkoneksikan aplikasi Java ke JDBC driver. Komponen ini berfungsi untuk mengatur beberapa tipe JDBC database driver yang berbeda. JDBC Driver Manager memilih driver mana yang sesuai untuk koneksi ke suatu database.

3. JDBC Test Suite

Komponen ketiga ini memastikan JDBC driver dapat menjalankan program user dan sangat berguna dalam melakukan testing sebuah aplikasi yang menggunakan teknologi JDBC.

4. JDBC-ODBC Bridge

Adalah database driver yang menggunakan ODBC driver untuk koneksi ke database serta memiliki fungsi utama untuk translasi dari JDBC method calls ke ODBC function calls dan mengimplementasikan JDBC untuk semua driver yang didukung oleh ODBC. Komponen ini dapat diimplementasikan dalam package sun.jdbc.odbc.

   JDBC MEMILIKI 10 ARSITEKTUR, YAITU :
  1. Database connections
  2. SQL Statements
  3. Result set
  4. Database metadata
  5. Prepared Statement
  6. Binary Large Objects (BLOBs)
  7. Character Large Objects (CLOBs)
  8. Callable statements
  9. Database Driver
  10. Driver Manager

Tipe 1 – JDBC-ODBC Bridge

Fungsi

  • Translasi query dari JDBC ke ODBC query
  • Client à JDBC Driver à ODBC Driver à Database

Keunggulan

  • Semua database yang didukung oleh ODBC dapat diakses

Kelemahan

  • Performance overhead 
  • ODBC driver harus diinstal di semua client
  • Dibutuhkan client-side software

Tipe 2 – Java to Native API

Fungsi

  • Konversi JDBC calls ke client API untuk database
  • Client à JDBC driver à Vendor Client DB Library à Database

Keunggulan

  •  Performa lebih baik daripada tipe 1

Kelemahan

  •  Vendor client library harus diinstal di client.
  • Tidak dapat digunakan di internet karena membutuhkan client-side software.
  • Tidak semua database memberikan client-side library.


Tipe 3 – Java to Network Protocol or All-Java Driver

Fungsi


  • Menggunakan pendekatan three-tier communication
  • Vendor independent
  • Client à JDBC Driver à Middleware-Net Server à Any database


Keunggulan

  •  Tidak membutuhkan instalasi pada client-side
  • Middleware server dapat memberikan fungsi tambahan dalam hal caching, load balancing, logging, auditing, dll.
  • Dapat digunakan di internet


Kelemahan


  •  Membutuhkan program yang bersifat database-specific untuk middle tier.
  • Extra layer dapat menyebabkan time-bottleneck.


Tipe 4 – Java to Database Protocol

Fungsi


  • Melakukan komunikasi langsung dengan database melalui koneksi socket.
  • Driver berfungsi mengubah JDBC call ke database protocol langsung.
  •  Diimplementasikan sepenuhnya dalam Java.
  • Client Machine à Native Protocol JDBC Driver à Database Server. Contoh: Oracle Thin Driver


Keunggulan

  • Performa cenderung meningkat à Tidak melakukan translasi ke ODBC, tidak menggunakan client API, tidak menggunakan middleware layer

Kelemahan

  • Pada sisi client, driver untuk masing-masing database harus terinstal.

BEBERAPA KONSEP PENTING DI DALAM JDBC :

Transactions

  • Secara default, semua transaksi pada JDBC bersifat auto-commit

Logging

  • Digunakan untuk mengatur apakah dilakukan logging kejadian selama transaksi dilakukan.


Concurrency

  • Memastikan transaksi terjadi sesuai urutan kronologis.
  • Berhubungan dengan kemungkinan terjadinya multikoneksi yang mengakses data yang sama.

JDBC MASIH MEMILIKI KOMPONEN PENTING LAIN, YAITU :

  1. Package java.sql : Berisi beberapa class, interface yang digunakan dalam transaksi.
  2. DriverManager : Menangani segala sesuatu yang berkaitan dengan driver yang dipakai.
  3. DataSource : Alternatif dari DriverManager untuk melakukan koneksi database.

JDBC Connection Object

Object untuk melakukan koneksi dengan database
Membuat Statement, PreparedStatement, dan CallableStatement untuk eksekusi SQL.
Melakukan commit dan rollback transaksi


KOMPONEN UTAMA JDBC API


JDBC API memiliki beberapa komponen utama yang berhubungan dengan mekanisme pengolahan data baik itu untuk berkomunikasi dengan database server, melakukan koneksi, mengirim perintah SQL, mendapatkan data, menutup koneksi, serta penanganan error yang mungkin terjadi dalam pengolahan data.
  1. Driver adalah komponen untuk menangani komunikasi dengan database server.
  2. DriverManager adalah komponen untuk menangani objek Driver dimana objek DriverManager juga mengabstraksi detail dari proses kerja objek Driver.
  3. Connection adalah komponen untuk merepresentasikan koneksi secara fisik ke database
  4. Statement adalah komponen untuk mengirim perintah-perintah SQL ke database.
  5. ResultSet adalah komponen untuk menyimpan data yang didapat dari database setelah perintah SQL dijalankan dengan menggunakan komponen Statement.
  6. SQLException adalah komponen untuk menangangi kesalahan-kesalahan (error) yang mengkin terjadi dalam pengolahan database


EmoticonEmoticon