Friday, March 7, 2014

Batch Update dengan Statement

0 comments

Pendahuluan

Batch Update adalah suatu proses dimana kita dapat menjalan kumpulan dari beberapa sql statement hanya dengan satu kali proses. Batch Update hanya berlaku untuk proses insert, update, dan delete.

Untuk mengetahui lebih dalam tentang Batch Update, silahkan lihat contoh perbandingan SQL Statement dengan dan tanpa Batch Update.

Contoh Statement Tanpa Batch Update

Di bawah ini adalah contoh program SQL Statement tanpa menggunakan Batch Update.

package com.mbj.jdbc.test;
import java.sql.*;
public class SatementDemo{
   public static void main(String[] args){
           try{
         System.out.println("Accessing Oracle JDBC Driver");
         Class.forName("oracle.jdbc.driver.OracleDriver");
    }catch(ClassNotFoundException ex){
         System.out.println("Failed to connect Oracle JDBC Driver");
         ex.printStackTrace();
    }

    System.out.println("Successfully Connecting Oracle JDBC Driver");
    Connection connection = null;
    Statement statement = null;
    try{
       connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:hris","root","password");
       statement = connection.createStatement();
       List<String> queryList = new ArrayList()<String>;
       String query1 = "insert into mahasiswa(nim, nama) values ('1','Nursalim')";
       String query2 = "insert into mahasiswa(nim, nama) values ('2','Iski')";
       String query3 = "insert into mahasiswa(nim, nama) values ('2','Budi')";

       queryList.add(query1);
       queryList.add(query2);
       queryList.add(query3);
     
       for(String query : queryList){
           statement.execute(query);
       }    
    }catch(SQLException sqx){
       System.out.println("Error connecting to Oracle Database");
       sqx.printStackTrace();

    }
    connection.close();


   }
}

Dengan menggunakan statement biasa, maka setiap kali statement di jalan, program akan mengakses database. Ini akan menjadi problem ketika berurusan dengan jumlah data yang besar. Problemnya macam-macam bisa waktu eksekusi yang lama sampai terjadi error java.lang.OutOfMemoryError.

Untuk mengatasi masalah diatas, maka digunakanlah solusi Batch Update. Untuk Lebih jelasnya lihat contoh di bawah ini.

Contoh Statement dengan Batch Update

Di bawah ini adalah contoh penggunaan Batch Update dalam Statement.

package com.mbj.jdbc.test;
import java.sql.*;
public class BatchUpdateStatementDemo{
    public static void main(String[] args){
    try{
         System.out.println("Accessing Oracle JDBC Driver");
         Class.forName("oracle.jdbc.driver.OracleDriver");
    }catch(ClassNotFoundException ex){
         System.out.println("Failed to connect Oracle JDBC Driver");
         ex.printStackTrace();
    }

    System.out.println("Successfully Connecting Oracle JDBC Driver");
    Connection connection = null;
    Statement statement = null;
    try{
       connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:hris","root","password");
       statement = connection.createStatement();
       List<String> queryList = new ArrayList()<String>;
       String query1 = "insert into mahasiswa(nim, nama) values ('1','Nursalim')";
       String query2 = "insert into mahasiswa(nim, nama) values ('2','Iski')";
       String query3 = "insert into mahasiswa(nim, nama) values ('2','Budi')";

       queryList.add(query1);
       queryList.add(query2);
       queryList.add(query3);
     
       for(String query : queryList){
           statement.addBatch(query);
       }
       int[] hasil = statement.executeBatch();      
    }catch(SQLException sqx){
       System.out.println("Error connecting to Oracle Database");
       sqx.printStackTrace();

    }
    connection.close();
    }
}

Download Source Code

Silahkan download source code lengkapnya disini.

Penutup

Sekian tutorial kali ini, semoga bermanfaat.

Memanggil Stored Procedure via JDBC

0 comments

Pendahuluan

Stored Procedure adalah sebuah fungsi atau prosedur yang berada di dalam database. Kalau Fungsi atau Prosedur umumnya di tanam di aplikasi, sedangkan kalau Stored Procedure di tanam di database. Tujuannya adalah untuk meningkatkan performance aplikasi sehingga lebih cepat tanpa membebani aplikasi.

Untuk memanggil Stored Procedure via JDBC, kita bisa menggunakan kelas java.sql.CallableStatement.

Sintaks:

CallableStatement callableStatement = connection.prepareCall("{call procedurName(?,?)}");

Di bawah ini adalah contoh pemanggilan stored procedure via JDBC.

Membuat Procedure SP_Delete_Mahasiswa


CREATE OR REPLACE PROCEDURE SP_Hapus_Mahasiswa
( nim   IN tbl_mhs.nim%type,
  result OUT SYS_REFCURSOR
)
AS
BEGIN
   DELETE tbl_mhs
   WHERE nim = nim;
END;

Membuat Kelas Untuk Memanggil Store Procedure

Buatlah kelas DemoCallableStatement.java seperti di bawah ini:

package com.mbj.jdbc.test;
import java.sql.*;
public class DemoCallableStatement{
   public static void main(String[] args){
    try{
         System.out.println("Accessing Oracle JDBC Driver"); 
         Class.forName("oracle.jdbc.driver.OracleDriver");
      }catch(ClassNotFoundException ex){
         System.out.println("Failed to connect Oracle JDBC Driver");
         ex.printStackTrace();
      }

      System.out.println("Successfully Connecting Oracle JDBC Driver");
      Connection connection = null;

      try{

         connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:hris","root","password");
         String nim = "20140898989"; //nim yang akan dihapus
         String deleteMahasiswaSP = "{call SP_Hapus_Mahasiswa(?,?) }";
         CallableStatement callableStatement = connection.prepareCall(deleteMahasiswaSP);
         callableStatement.setString(1, nim);
         callableStatement.setRegisterOutParameter(2,OracleTypes.CURSOR);
         callableStatement.executeUpdate;

         System.out.println("Mahasiswa dengan nim "+nim+" berhasil di hapus");        
      }catch(SQLException sqx){
         System.out.println("Error connecting to Oracle Database");
         sqx.printStackTrace();
      }

      connection.close();
   }
   }
}

Download Source Code

Silahkan download source code lengkapnya disini.

Penutup

Demikian tutorial kali ini, semoga bermanfaat.

Thursday, March 6, 2014

Membuat Custom Tag di JSP

0 comments

Pendahuluan


Untuk membuat Custom Tag di JSP, ikuti langkah-langkah dibawah ini:

Membuat Tag Handler

Buatlah kelas NumberFormatTag.java seperti di bawah ini:

package com.mbj.jsp.customtag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

import java.io.IOException;
import java.text.DecimalFormat;


public class NumberFormatTag extends SimpleTagSupport {

    private String format;
    private String number;

    public NumberFormatTag() {
    }

    public void setFormat(String format) {
        this.format = format;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    @Override
    public void doTag() throws JspException, IOException {
        System.out.println("Number is:" + number);
        System.out.println("Format is:" + format);
        try {
            double amount = Double.parseDouble(number);
            DecimalFormat formatter = new DecimalFormat(format);
            String formattedNumber = formatter.format(amount);
            getJspContext().getOut().write(formattedNumber);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}



Membuat File TLD


Buatlah file mbjtld.tld seperti di bawah ini:

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
<description>Number Format Tag</description>
<tlib-version>2.1</tlib-version>
<short-name>mbjtag</short-name>
<uri>http://www.mbj.web.id/jsp/tlds/
mbjtag</uri>
<tag>
    <name>formatNumber</name>
    <tag-class>com.mbj.jsp.customtag.NumberFormatTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
    <name>format</name>
    <required>true</required>
    </attribute>
    <attribute>
    <name>number</name>
    <required>true</required>
    </attribute>
</tag>
</taglib>


Letakkan file mbjtld.tld di folder WEB-INF/tld

Membuat File Document Descriptor (web.xml)


Setelah membuat TLD, saatnya TLD tadi kita tambahkan di file web.xml, seperti di bawah ini:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>JSP Custom Tags</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <jsp-config>
  <taglib>
    <taglib-uri>http://
mbj.web.id/jsp/tlds/mbjtag</taglib-uri>
    <taglib-location>/WEB-INF/tld/mbjtld.tld</taglib-location>
  </taglib>
  </jsp-config>
</web-app>


Membuat Halaman JSP


Buatlah file JSP numberformat.jsp seperti di bawah ini:

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Contoh Custom Tag</title>
<%@ taglib uri="http://mbj.web.id/jsp/tlds/mbjtag" prefix="mbj"%>
</head>
<body>

<h2>Contoh Number Fomatting menggunakan Custom Tag</h2>

<mbj:formatNumber number="51203.20" format="#,###.00"/><br><br>

<mbj:formatNumber number="1234.567" format="$# ###.00"/><br><br>

</body>
</html>


Download Source Code


Silahkan download source codenya disini.

Penutup


Sekian pembahasan tutorial kali ini, semoga bermanfaat.

Monday, March 3, 2014

Perbedaan Abstract Class dan Interface

0 comments

Pendahuluan


Di bawah ini adalah tabel perbedaan antara Abstract Class dan Interface.

Abstract Class
Interface
Abstract Class hanya bisa meng-extend satu abstract class dan implement beberapa interface.
Interface hanya bisa meng-extend interface lainnya. Dan tidak bisa implement class atau interface lainnya.
Method boleh bersifat final
Method tidak boleh bersifat final.
Method boleh bersifat static
Method tidak boleh bersifat static
Suatu abstract class hanya bisa meng-extend satu abstract lainnya.
Suatu interface bisa meng-extend satu atau lebih interface lainnya.
Bisa mendeklarasikan instance variable dan constant
Hanya bisa mendeklarasikan constant. Secara implisit variable yang dideklarasikan di interface bersifat public, static dan final.
Kita harus menuliskan sendiri access modifier (public, private, protected)
Secara implisit, modifier untuk method di interface adalah public dan abstract.
Dapat berisi abstract dan non-abstract method
Hanya boleh berisi abstract method.

Penutup


Sekian tutorial kali ini, semoga bermanfaat

Saturday, March 1, 2014

Class / Static Varible di Java

0 comments

Pendahuluan


  • Class variable atau static variable di deklarasikan dengan kata kunci atau keyword static.
  • Dengan menggunakan static, maka Method dan Variable akan menjadi milik class, bukan menjadi milik suatu instance.
  • Static variable dapat diakses secara langsung menggunakan perintah  namaKelas.namaVariable tanpa harus membuat object terlebih dahulu.
  • Static method dapat diakses secara langsung menggunakan perintah namaKelas.namaMethod tanpa harus membuat object terlebih dahulu.
  • Biasanya digunakan untuk method atau variable yang sering digunakan.

Contoh

public class StaticDemo{
    public static int tambah(int a, int b){
        return a+b;
    }

    public static int kurang(int a, int b){
        return a-b;
    }
}

public class StaticDemoTest{
    public static void main(String[] args){
       System.out.println("5 + 10 = "+StaticDemo.tambah(5,10));
       System.out.println("10 - 5 = "+StaticDemo.kurang(10,5));
    }
}

Penutup


Sekian pembasan tentang class variable di Java. Semoga bermanfaat.