Menggunakan Connection Pooling pada aplikasi web

Sebelum kita liat bagaimana menggunakan Coonection Pooling pada aplikasi web, kita liat dulu apa sih connection pooling itu? dan apa kelebihannya jika aplikasi menggunakan connection pooling.

Connection Pooling adalah teknik untuk sharing sekumpulan cached connection object yang gunakan oleh multiple client.  Yang dimaksud coonection di sini adalah koneksi ke data source misalnya koneksi ke database.

Mengapa dibutuhkan cached connection object? misalnya connection object ke database? ini karena object connection sangat memakan resource jika kita melakukan buka tutup koneksi dan tentunya membuat aplikasi menjadi lambat.  Mungkin belum begitu terasa jika aplikasi webnya hanya diakses oleh beberapa orang. Tapi coba saja aplikasi tersebut diakses oleh puluhan orang atau ratusan orang dan secara bersamaan memanggil fungsi dari aplikasi untuk hapus data misalnya. Nah disini akan sangat terasa jika aplikasi kita makin lama makin lambat dan bahkan kadang-kadang aplikasi gagal melakukan proses.

Nah dengan coonection pooling maka aplikasi yang kita buat tidak perlu lagi buka tutup keneksi secara langsung kedatabase. Tetapi jika aplikasi membutuhkan koneksi ke database, maka aplikasi akan mengambil object keneksi yang tidak terpakai dari poolnya. Dan setelah aplikasi selesai menggunakan object keneksi tersebut, maka aplikasi akan mengembalikan object koneksi tsb ke poolnya dan siap digunakan oleh bagian aplikasi lainnya. Ilustrasinya terlihat seperti gambar di bawah:

Object Connection yang ada dalam pool akan dimaintain oleh container (servlet container). Container yang akan menciptakan object-object connection ini jika dibutuhkan dan menjaganya dalam pool.

Nah bagaimana teknis penggunaannya? apakah berbeda dengan membuka koneksi biasa?  Jawabannya tidak berbeda jauh, yang berubah hanya bagian kode program untuk menciptakan object Connection. Kalo sebelumnya object Connectionnya diciptakan dengan mumbuka koneksi langsung ke database, nah kalo menggunkan connection pooling kita mengambil object coonection dari datasource.

Berikut ini adalah class DBUtil.java yang bisa digunakan untuk mengambil connection dari datasource. Bagi anda yang sudah melihat Video Tutorial CD#3 tinggal mengubah sedikit class ini menjadi :

public class DBUtil {
private Connection conn = null;
public DBUtil() {
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/dvdstore");
conn = ds.getConnection();
} catch (Exception ex) {
}
}

public Connection getConn() {
return this.conn;
}

public void closeConn() {
if (this.conn != null) {
try {
this.conn.close();
} catch (SQLException ex) {
Logger.getLogger(DBUtil.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}

Selanjutnya ubahlah file context.xml yang berada dalam folder Configuration File menjadi:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/e-shop">
    <Resource auth="Container" 
              driverClassName="com.mysql.jdbc.Driver" 
              maxActive="100" 
              maxIdle="30" 
              maxWait="-1" 
              name="jdbc/dvdstore" 
              type="javax.sql.DataSource" 
              url="jdbc:mysql://localhost:3306/dvdstore"
              username="root" 
              password=""/>
</Context>

build project anda dan coba jalankan lagi aplikasinya..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: