Tuesday, May 24, 2005

JDBC in a Nutshell

Apa sih program yang biasa temen2 bikin ? pastilah ada hubungannya dengan tarik-menarik dari yang namanya Database. Nah pada session ini aku mo share tentang technology di Java yaitu JDBC (Java Database Connectivity). Perlu kamu pada ketahui, technology JDBC ini included didalam J2SE maupun J2EE, so jangan khawatir klo mo bikin program yang berhubungan dengan database. Yang aku tau, kerennya nih JDBC tidak hanya bisa tarik n simpan dari/ke database tapi juga bisa dari tabular data source seperti dari spreadsheet( Excell) ato bahkan dari file biasa.

So pasti dengan begitu kita akan butuh yang namanya JDBC driver API, dan untuk mengaksesnya kita perlu yang namanya JDBC API yang pada saat ini JDBC API yang terbaru adalah versi 3.0. Nah di Java ada 4 type JDBC driver API, dan kamu2 semua bisa baca perbandingannya di article published in Computerworld. Pada intinya yaitu : JDBC-ODBC Bridge Driver, Native API Driver, Middleware Driver dan Direct Java Driver. Yang paling banyak di gunakan adalah ke 3 dan ke 4, karena lebih baik dari segi performansi dan efisiennya :D (katanya sih!). Dengan begitu temen ga usah khawatir karena hampir semua bentuk driver telah tersedia bahkan untuk koneksi ke ODBC juga, tapi yang ini tidak disarankan (juga katanya lagi :p). Coba deh baca artikel ini aja :p JDBC Overview klo pengen tahu konsep dari JDBC.

Perlu diketahui bahwa core JDBC API di Java terdapat dalam 2 package, yaitu : java.sql package dan javax.sql package dimana yang aku sebutkan terakhir untuk level enterprise atau server-side. Trus gimana sih cara pakenya ? hmmm... klo diterangin sih banyak n mungkin temen2 mendingan langsung aja baca di JDBC Basic Tutorial, tapi tenang aku akan coba jelasin sedikit konsep step by step paling utama dalam pemakaian JDBC ini. Yang pertama yang mesti ada adalah JDBC drivernya :D, kmu bisa cari di driver database. Maka langkah pertama adalah load JDBC driver dengan cara memanggil Class.forName(drivername).
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // contoh untuk JDBC-ODBC Bridge
Class.forName("postgresql.Driver"); // postgresql
Class.forName("oracle.jdbc.driver.OracleDriver"); // oracle


Harusnya klo nama Class dari drivername-nya bener maka ga ada masalah. Langkah ke dua adalah melakukan koneksi ke database dengan mengirimkan URLs (Uniform Resource Locators). Disini semua tergantung dari type driver yang dipake dan type database yang dipake serta beberapa parameter tambahan. Kmu bisa melakukan koneksi dengan memanggil method
DriverManager.getConnection(url).
String url = "jdbc:odbc:ejbdemo"; // contoh url untuk JDBC-ODBC
Connection con = DriverManager.getConnection(url);
String url = "jdbc:mysql://localhost/ejbdemo?user=user;password=pass"; // untuk mySQL
Connection con = DriverManager.getConnection(url, "user", "password");

Selesai langkah ini maka kamu udah siap bisa untuk tarik-menarik data dari database :D, n coba deh kmu baca2 mengenai Connection Pooling untuk meningkatkan performansi dalam koneksi ke DB (sepertinya buat tingkat expert ya bro ;o).

Hhhhh :(.... langkah berikutnya adalah melakukan command sesuai dengan query yang diinginkan dan diistilah java dikenal dengan Statement. Ada beberapa jenis Statement yang ada di java, antara lain : CallableStatement, Statement dan PreparedStatement. Aku coba jelasin satu2 yah :D, CallableStatement digunakan untuk eksekusi StoredProcedure yang ada di DB.
CallableStatement cs = con.prepareCall("{call accountlogin(?,?,?)}");
cs.setString(1,theuser);
cs.executeQuery();

Jenis yang lain adalah Statement dan PreparedStatement, duo ini hampir sama gunanya untuk eksekusi perintah2 SQL, bedanya cuman klo Statement untuk SQL yang ga pake parameter (istilah kerennya Simple Query), sedang PreparedStatement buat yang ada parameternya. Dua jenis ini bisa dipake untuk Query ataupun Update (Insert, Delete dan Update), n bedanya cuman sintax yang dipake :o
Statement stmt = con.createStatement();
ResultSet results = stmt.executeQuery("SELECT TEXT FROM dba ");
PreparedStatement pstmt = con.prepareStatement(
select theuser from
registration where
emailaddress like ?");
//Initialize first parameter with email address
pstmt.setString(1, emailAddress);
ResultSet results = ps.executeQuery();

Dan akhirnya ... ini yang terakhir aja yah :D. ResultSet dipake untuk menampung hasil query yang nantinya mo ditampilin.
Statement stmt = con.createStatement();
ResultSet results = stmt.executeQuery("SELECT TEXT FROM dba ");
while(results.next()){
String s = results.getString("TEXT");
displayText.append(s + "\n");
}
stmt.close();

Sebenernya masih banyak lagi mengenai JDBC tapi kepanjangan euy ;p. Ntar baca2 aja sendiri tentang navigasi dan scrolling ResultSet, Batch Job, menyimpan BLOB, mengontrol transaksi dan masih banyak lagi. Klo masih penasaran ya datangi aja neh situs JDBC Technology, disitu lengkap banget di bahas JDBC.
But jangan senang dulu ;), soalnya sekarang sih banyak orang yang lebih suka memakai technology seperti JDO (Java Data Object) ato ORM (Object-Relational Mapping) seperti Toplink, Hibernate, Ibatis) karena lebih simple dan efisien dalam coding. Bahkan technology2 tersebut biasanya udah included dan disupport oleh application server yang sekarang beredar seperti oc4j-nya oracle, weblogic, websphere ;D.. Tapi klo menurutku akan lebih baik klo kita belajar dari sejarahnya dahulu, bukankah memang seharusnya begitu :o dan lagian dalam application server kita juga tetep bisa koneksi dengan JDBC dengan menggunakan JCA (J2EE Connector Architecture) yang dikenal dengan JDBC Connector. Oke sekian dulu yah tentang JDBC-nya ...capek :p, but semoga bermanfaat.
Mari budayakan Java !!

No comments: