ORM (Object Relational Mapping) [Wiki] adalah suatu metode/teknik pemrograman yang digunakan untuk mengkonversi data dari lingkungan bahasa pemrograman berorientasi objek (OOP) dengan lingkungan database relasional. Seperti kita ketahui, dalam aplikasi enterprise kedua lingkungan tersebut berada pada sistem yang berbeda, yaitu OOP berada pada sisi pemrograman aplikasi, sedangkan database relasional berada pada sisi sistem database. Misi utama dari ORM ini adalah menjembatani kedua sistem yang berbeda tersebut.
ORM memiliki kemampuan untuk menciptakan objek database virtual, yaitu suatu model database yang di representasikan kedalam sebuah objek pada bahasa pemrograman OOP. Berikut ini adalah beberapa kelebihan yang dimiliki ORM, yaitu:
- Mempercepat pengembangan program. Contohnya, mengurangi perulangan kode query, memudahkan pemakaian karena tabel-tabel ter-representasikan dalam bentuk objek
- Membuat akses data menjadi lebih abstrak dan portable. Hal ini dikarenakan ORM menghandle pen-generate-an syntax SQL berdasarkan vendor database-nya.
- Mensupport pengkapsulan business rule pada lapisan Data Access.
- Mengenerate boilerplate code (unit kode yang reusable) untuk fungsi dasar CRUD (Create,Read,Update,Delete).
Berikut ini saya berikan dua contoh program Java (ORM dan Non ORM) untuk koneksi dan manipulasi data pada Database. Contoh ini saya ambil dari blog sebelah.
Tanpa ORM :
String host = "localhost";
String db = "kiki";
String user = "root";
String pass = "";
String driver = "com.mysql.jdbc.Driver";
String koneksi = "";
koneksi = "jdbc:mysql://" + host + ":3306/" + db + "?user=" + user +"&password=" + pass;
Class.forName(driver).newInstance();
Connection con = DriverManager.getConnection(koneksi);
Statement stmt = con.createStatement();
String ReqUser = request.getParameter("username");
String ReqPass = request.getParameter("password");
String QUERY_INSERT = "INSERT INTO Mahasiswa VALUES (“ +ReqUser+ “,” +ReqPass+” )””
Dengan ORM :
public void tambahMhs (){
Mahasiswa ophex = new Mahasiswa();
ophex.setNRP(1);
ophex.setNama("ophex");
ophex.setPassword("mbuh");
HibernateUtil
.getSessionFactory()
.getCurrentSession().save(ophex);
}
Metode yang paling umum dari ORM adalah memetakan Tabel atau query kedalam class Java berupa POJO atau Java Beans. Deskripsi lengkap POJO bisa dilihat di Wiki . Dapat dikatakan, POJO adalah class java yang hanya berisi variabel dan method setter getter tanpa ada method proses lainnya.
Contoh POJO :
public class Mahasiswa {
private String NIM;
private String nama;
private String alamat;
public String getNIM() {
return this.NIM;
}
public String getNama() {
return this.nama;
}
public String getAlamat() {
return this.alamat;
}
public void setNIM(String NIM) {
this.NIM = NIM;
}
public void setNama(String nama) {
this.nama = nama;
}
public void setAlamat(String alamat) {
this.alamat = alamat;
}
}

InfoQ
2 comments
Comments feed for this article
3 April, 2011 at 12:57 am
Fredy
Koreksi sedikit ya om:
1. [quote]
Keunggulan ORM:
…
…
Mensupport pengkapsulan business rule pada lapisan Data Access.
[/quote]
Saya rasa business rule tetap ada pada business layer. Dengan ORM memungkinkan kita untuk dapat mengakses data purely by object. Konteks object di sini adalah Domain Object yang merupakan salah satu bagian dari Domain Layer/Business Layer. FYI, Domain Layer itu terdiri atas Factory, Repository, Service dan Domain Object. Dua hal terakhir (Service dan Domain Object) akan men-enkapsulasi business rule. Silakan kunjungi http://domaindrivendesign.org untuk detailnya.
2. POJO (Plain Object Java Object) merupakan pure object yang dapat berisi state (data) dan behaviour (method). Jadi POJO bukanlah berarti Dumb Data Holder, yang hanya berisi getXXX dan setXXX saja. Disebut POJO karena tidak wajib meng-implement interface atau extend class tertentu seperti yang terjadi pada EJB 2 (baca: Entity Bean), tapi cukup sebagai class simple saja yang kalaupun harus implements suatu interface sifatnya hanya sebagai marker interface saja, contohnya java.io.Serializable.
Anyway, salam buat Yoga ya dari tim Quadra
4 April, 2011 at 7:57 am
mikrolima
@Mas Freedy
Thank a lot master
Sukses selalu untuk mas Freedy & Quadra serta akasia-hobby nya. AMIN
Regards
YP