Struts2 Annotation (Convention Plugin)

Posted on July 06, 2010 by Dian Aditya

  Akhir-akhir ini saya masih sangat interest nih sama controller yang satu ini. Walaupun banyak orang bilang sekarang lagi hot-hotnya SpringMVC dan Struts merupakan teknologi jaman purba, but hey!! Ini Struts2 yang banyak orang menganggapnya sama dengan Struts(saja), walaupun sebenarnya saya juga belum pernah coba Struts 1 heuheuheu... Tapi biarin aja lah, yang jelas saya masih tetep mau bahas tentang Struts2 ini.

  Salah satu alasan yang bikin saya cinta Struts2 adalah plugin-nya yang cukup banyak yang sampai sekarang 'belum' saya temukan hal serupa pada SpringMVC. Nah karena hal itu kali ini saya mau kasih kabar nih kalau Struts2 ternyata punya versi anotasi untuk menggantikan mappernya yang berbentuk XML (saya juga baru tahu nih :hammer:). Kasus ini mirip seperti antara Hibernate Core dengan Hibernate Annotation yang sebenarnya fungsinya sama, hanya berbeda dalam bentuknya saja.

  Langkah awal bagaimana program Struts2 dapat mengenali anotasi adalah dengan menambahkan library struts2-convention-plugin-2xx.jar pada classpath. File ini sudah satu paket dengan struts-core saat kita download library Struts2 (saya menggunakan versi 2.1.6.1).

  Nah untuk mempermudah pemahaman (baca: biar saya gak capek ngetik :p), saya akan membandingkan versi anotasi dengan postingan saya sebelumnya yang masih menggunakan XML.

  Mari memulai membatiknya (baca: coding).

Pertama rubah settingan struts.xml menjadi seperti berikut :

  1: <!DOCTYPE struts PUBLIC
  2:         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  3:         "http://struts.apache.org/dtds/struts-2.0.dtd">
  4: 
  5: <struts>
  6: 	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
  7: 	<constant name="struts.devMode" value="false" />
  8: 	<!-- default path untuk viewer -->
  9: 	<constant name="struts.convention.result.path" value="/pages" />
 10: 	<!-- struts akan secara otomatis mengenali class yang berakhiran 
 11: 		Controller sebagai Action Class -->
 12: 	<constant name="struts.convention.action.suffix" value="Controller" />
 13: 	<constant name="struts.convention.default.parent.package"
 14: 		value="struts-default" />
 15: </struts>

Suffix bersifat opsional, jika baris tersebut tidak ditulis maka secara default struts akan mengenali class yang berakhiran *Action sebagai action class. Kemudian result path berfungsi untuk setting dimana folder viewer diletakkan (secara default result path /WEB-INF/content/).

Sekarang mari kita bandingkan versi XML dengan Annotation

Berikut contoh versi XML-nya, lihat

  1: 	<package name="default" extends="struts-default" namespace="/cobastruts">
  2: 		<action name="HelloVelocity" class="com.mervpolis.struts.HelloWorldAction">
  3: 			<result name="success" type="velocity">/page/hello.vm</result>
  4: 		</action>
  5: 		<action name="HelloJSP" class="com.mervpolis.struts.HelloWorldAction">
  6: 			<result name="success">/page/hello.jsp</result>
  7: 		</action>
  8: 	</package>

Dan berikut ini versi Anotasinya

  1: package com.mervpolis.struts;
  2: 
  3: import java.sql.Timestamp;
  4: 
  5: import org.apache.struts2.convention.annotation.Action;
  6: import org.apache.struts2.convention.annotation.Actions;
  7: import org.apache.struts2.convention.annotation.Namespace;
  8: import org.apache.struts2.convention.annotation.Result;
  9: 
 10: import com.opensymphony.xwork2.ActionSupport;
 11: 
 12: @Namespace("/cobastruts";)
 13: @Actions( {
 14: 		@Action(value = "HelloVelocity", results = { @Result(name = ActionSupport.SUCCESS, type = "velocity", location = "hello.vm";) }),
 15: 		@Action(value = "HelloJSP", results = { @Result(name = ActionSupport.SUCCESS, location = "hello.jsp";) }) })
 16: public class HelloWorldController extends ActionSupport {
 17: 	private String pesan;
 18: 	private String waktu;
 19: 
 20: 	public String execute() {
 21: 
 22: 		pesan = "HELLO WORLD....!!! Method execute telah dijalankan....";
 23: 		waktu = new Timestamp(System.currentTimeMillis()).toString();
 24: 
 25: 		return SUCCESS;
 26: 	}
 27: 
 28: 	public void setPesan(String pesan) {
 29: 		this.pesan = pesan;
 30: 	}
 31: 
 32: 	public String getPesan() {
 33: 		return pesan;
 34: 	}
 35: 
 36: 	public void setWaktu(String waktu) {
 37: 		this.waktu = waktu;
 38: 	}
 39: 
 40: 	public String getWaktu() {
 41: 		return waktu;
 42: 	}
 43: 
 44: }

Bagaimana? Menurut saya sih annotation lebih efisien daripada XML. Masih berpikir Struts2 susah? Cobain dulu... ^_^

Filed under Java | 0 Comments | Permalink

Swing & Android? Gak Jauh Beda

Posted on May 20, 2010 by Dian Aditya

Woho, baru kemaren saya coba bikin aplikasi Android sederhana dengan sedikit bimbingan dari temen :D Ternyata tidak terlalu sulit membuat sebuah tampilan aplikasi sederhana untuk Android ini, apalagi team dari Android ini juga sudah menyediakan tools yang dapat membantu kita dalam membangun application UI. Tools trsebut adalah ADT (Android Development Tools) yang merupakan plugin untuk Eclipse. Tetapi kali ini saya tidak akan membahas tentang bagaimana membuat aplikasi dengan GUI designer tersebut. Mengapa? Karena jika kita menggunakan GUI designer-nya android maka tools akan meng-generate kode dalam bentuk XML yang baru kemudian di-mapping ke dalam kode Java. Jadi? Ya ya ya, saya akan meberi sedikit contoh bagaimana membuat aplikasi Android sederhana dengan menggunakan kode Java secara menyeluruh, lalu kita bandingkan kode tersebut dengan aplikasi berbasis Swing yang saya buat setelahnya.

Pertama download Android SDK dan ADT di sini beserta cara instalasinya.

Buat Android Project Baru, kemudian isikan Project Name, Package Name dan Activity Name-nya.

Berikut baris kodenya :

package com.mervpolis.dwx.android;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
 
public class Main extends Activity {
	private Button btnSubmit;
	private TextView lblAlamat;
	private TextView lblNama;
	private TableRow row1;
	private TableRow row2;
	private TableRow row3;
	private TableLayout tableLayout;
	private EditText txtAlamat;
	private EditText txtNama;
 
	private void initComponents() {
		tableLayout = new TableLayout(this);
		setContentView(tableLayout);
		{
			row1 = new TableRow(this);
			tableLayout.addView(row1);
			{
				lblNama = new TextView(this);
				lblNama.setText("Nama";);
				lblNama.setWidth(100);
				row1.addView(lblNama);
			}
			{
				txtNama = new EditText(this);
				txtNama.setSingleLine();
				txtNama.setWidth(150);
				row1.addView(txtNama);
			}
		}
		{
			row2 = new TableRow(this);
			tableLayout.addView(row2);
			{
				lblAlamat = new TextView(this);
				lblAlamat.setText("Alamat";);
				row2.addView(lblAlamat);
			}
			{
				txtAlamat = new EditText(this);
				row2.addView(txtAlamat);
			}
		}
		{
			row3 = new TableRow(this);
			row3.setGravity(Gravity.CENTER);
			tableLayout.addView(row3);
			{
				btnSubmit = new Button(this);
				btnSubmit.setText("Save";);
				btnSubmit.setOnClickListener(new OnClickListener() {
					@Override
					public void onClick(View v) {
						btnSubmitOnclick(v);
					}
				});
				row3.addView(btnSubmit);
			}
		}
	}
 
	private void btnSubmitOnclick(View v) {
		AlertDialog d = new AlertDialog.Builder(this).create();
		d.setMessage("Nama : " + txtNama.getText() + " \nAlamat : "
				+ txtAlamat.getText());
		d.setCanceledOnTouchOutside(true);
		d.show();
	}
 
	/*
	 * Main method-nya di sini!
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
 
		initComponents();
	}
}
 

Kemudian bandingkan dengan kode berikut :

package com.mervpolis.dwx.swing;
 
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
public class Main extends JFrame {
 
	private JButton btnSubmit;
	private JLabel lblAlamat;
	private JLabel lblNama;
	private JPanel row1;
	private JPanel row2;
	private JPanel row3;
	private JPanel tableLayout;
	private JTextField txtAlamat;
	private JTextField txtNama;
 
	private void initComponents() {
		tableLayout = new JPanel();
		tableLayout.setLayout(new GridLayout(0, 1));
		setContentPane(tableLayout);
		{
			row1 = new JPanel();
			tableLayout.add(row1);
			{
				lblNama = new JLabel();
				lblNama.setText("Nama    ";);
				row1.add(lblNama);
			}
			{
				txtNama = new JTextField();
				txtNama.setColumns(10);
				row1.add(txtNama);
			}
		}
		{
			row2 = new JPanel();
			tableLayout.add(row2);
			{
				lblAlamat = new JLabel();
				lblAlamat.setText("Alamat  ";);
				row2.add(lblAlamat);
			}
			{
				txtAlamat = new JTextField();
				txtAlamat.setColumns(10);
				row2.add(txtAlamat);
			}
		}
		{
			row3 = new JPanel();
			tableLayout.add(row3);
			{
				btnSubmit = new JButton();
				btnSubmit.setText("Save";);
				btnSubmit.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseClicked(MouseEvent e) {
						btnSubmitMouseClicked(e);
					}
				});
				row3.add(btnSubmit);
			}
		}
 
		pack();
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setVisible(true);
	}
 
	private void btnSubmitMouseClicked(MouseEvent e) {
		JOptionPane.showMessageDialog(this, "Nama : " + txtNama.getText()
				+ " \nAlamat : " + txtAlamat.getText());
	}
 
	public static void main(String a[]) {
		new Main().initComponents();
	}
 
}
 

Kemudian jalankan keduanya kode yang paling atas akan menghasilkan tampilan seperti berikut :

Android_0Android_1

Sedangkan kode dibawahnya akan menghasilkan :

Swing_0 Swing_1

Fiuh, akhirnya selesai juga :D Amati kedua-duanya, tidak jauh berbeda bukan baris kodenya? Dan menariknya keduanya menghasilkan tampilan yang hampir sama, hanya saja perbedaannya program pertama berjalan pada Android, sedangkan program kedua berjalan pada komputer desktop. Selamat mencoba...

Special thanks to Dias.

Filed under Java | 0 Comments | Permalink

Konversi Nilai Resistor dengan JQuery

Posted on April 11, 2010 by Dian Aditya

    Beberapa waktu yang lalu saya mendapatkan tugas dari Bapak Guru tercinta :p untuk membuat sebuah aplikasi yang dapat merubah inputan dari user berupa angka menjadi gelang warna pada resistor, sempat kepikiran untuk membangun aplikasi tersebut menggunakan swing, tapi ga tau kenapa tiba-tiba seperti ada bisikan di otak saya, ?gimana kalo makan dulu bro?? dan saat itu juga saya berpikir ?gmn kalo pake JQuery aja?? (g nyambung :D). Dan Walhasil, abrakadabra, jadilah sebuah mahakarya yang sangat dahsyat!


Dan berikut source codenya :
<html>
    <head>
        <title>Converter</title>
        <style type="text/css">
            .gelang {
                background-color:transparent;
                width:20px;
                height:100px;
                margin:1px;
                float:left;
                display:none;
                border-style:solid;
                border-width:1px;
            }
            label {
                font-weight:bold;
            }
        </style>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
        <script type="text/javascript">
            var warna = [
                "black",
                "#993300",
                "red",
                "#ff8a00",
                "yellow",
                "green",
                "blue",
                "purple",
                "silver",
                "white",
                "#f6fd2e",
                "#b6b6b6"
            ];
            function reset() {
                $('#1, #2, #3, #4, #5').hide().css("background-color", "#FFFFFF";);
            }
            function check(str) {
                reset();
                var inp = str;
                var len = inp.length;
                var gel = $('#jml').val();
                $('#3').fadeIn();
                if(len <= 2) {
                    $('#1').css("background-color", warna[inp[0]]).fadeIn();
                    $('#2').css("background-color", warna[inp[1]]).fadeIn();
                    
                } else {
                    var temp = "";
                    for(i = 0 ; i < len ; i++) {
                        if(i < gel) {
                            temp += inp[i];
                        } else {
                            temp += '0';
                        }
                    }
                    $('#input').val(temp);
                    var nol = len - gel;
                    $('#1').css("background-color", warna[inp[0]]).fadeIn();
                    $('#2').css("background-color", warna[inp[1]]).fadeIn();
                    
                    if(gel == 2) {
                        $('#3').css("background-color", warna[nol]).fadeIn();
                    } else {
                        $('#3').css("background-color", warna[inp[2]]).fadeIn();
                        $('#4').css("background-color", warna[nol]).fadeIn();
                    }
                    //alert(len - gel);
                }
            }
            $(function() {
                $('#input').focus();
                $('#input').keydown(function(e) {
                    
                    if(e.keyCode == 8) {
                        return true;
                    } else if(e.keyCode == 13) {
                        $('#submit').click();
                        return true;
                    } else if(e.keyCode >= 48 && e.keyCode <= 57) {
                        return true;
                    }
                    return false;
                });
                $('#jml').change(function() {
                    if($(this).val() == 2) {
                        $('#4').hide();
                    } else {
                        $('#4').show();
                    }
                    $('#submit').click();
                }).change();
                $('#toleransi').change(function() {
                    $('#submit').click();
                }).change();
                $('#submit').click(function() {
                    check($('#input').val());
                    $('#5').css("background-color", warna[$('#toleransi').val()]).fadeIn();
                });
            });
        </script>
    </head>
    <body>
        <div style="text-align:center;width:100%;height:100px;">
        </div>
        <div style="text-align:center;width:100%;">
            <div>
                <label>
                    Nilai Hambatan : &nbsp;
                    <input type="text" size="10" id="input" />
                    &nbsp; &Omega;
                </label>
            </div>
            <div style="margin:20px;">
                <label>
                    Toleransi : &nbsp;
                    <select id="toleransi">
                        <option value="1">1%</option>
                        <option value="10">5%</option>
                        <option value="11">10%</option>
                        <option value="9">20%</option>
                    </select>
                    &nbsp;
                </label>
            </div>
            <div style="margin:20px;">
                <label>
                    Jumlah Gelang Utama : &nbsp;
                    <select id="jml">
                        <option value="2">3</option>
                        <option value="3">4</option>
                    </select>
                </label>
            </div>
            <div style="margin:20px;text-align:center;">
                <button id="submit">Submit</button>
            </div>
        </div>
        <table align="center" id="tb">
            <tr>
                <td>
                    <div id="1" class="gelang"></div>
                    <div id="2" class="gelang"></div>
                    <div id="3" class="gelang"></div>
                    <div id="4" class="gelang"></div>
                    <div id="5" class="gelang"></div>
                </td>
            </tr>
        </table>
    </body>
</html>

Struts + Velocity, Solusi Mudah dan Ideal

Posted on January 03, 2010 by Dian Aditya

Saya masih tertarik nih dengan model aplikasi MVC, kali ini saya akan membahas sedikit tentang Controller pada aplikasi Java Web yang dikenal merupakan solusi MVC paling mudah yaitu Struts2. Tapi ada yang tau apa itu Controller? Nih saya copas dari modul JENI :P “Controller merupakan sebuah layer yang bekerja untuk mengurusi urusan antar layer, yang artinya bertanggung jawab terhadap eksekusi aplikasi.” Sedangkan untuk masalah Viewer Layer saya menggunakan Velocity yang saya rasa juga lebih mudah dibandingkan dengan JSP.

Langsusng saja dari pada bingung apa maksudnya mending kita langsung terjun ke lapangan. Untuk memulai membuat project pertama buka IDE anda :D dalam kasus kali ini saya menggunakan Eclipse IDE. Eits, jangan lupa untuk mendownload library, bagi anda yang belum mempunyai library Struts2 dan Velocity silakan download di sini.

Nah mari menuju medan perang!

Pertama buat project baru.

Untuk Eclipse silakan klik “File – New – Other – Web – Dynamic Web Project” Maka otomatis akan langsung terbentuk folder src dan WebContent. Copy semua library yang sudah didownload ke dalam folder WebContent/WEB-INF/lib maka library tersebut akan langsung dikenali sebagai Web App Libraries.

Lib

Nah setelah semua library siap langkah pertama untuk membuat sebuah aplikasi Struts2 adalah dengan mengkonfigurasi web.xml yang terdapat pada folder WebContent/WEB-INF.

Berikut konfigurasi yang harus ditambahkan pada web.xml :

  1: <?xml version="1.0" encoding="UTF-8"?>
  2: <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3:   <display-name>Struts2</display-name>
  4:   <filter>
  5:     <filter-name>struts2</filter-name>
  6:     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  7:   </filter>
  8:   <filter-mapping>
  9:     <filter-name>struts2</filter-name>
 10:     <url-pattern>/*</url-pattern>
 11:   </filter-mapping>
 12:   <welcome-file-list>
 13:     <welcome-file>index.jsp</welcome-file>
 14:   </welcome-file-list>
 15: </web-app>

Selanjutnya kita buat class action dari Struts2, action ini adalah class yang fungsinya tidak jauh berbeda dengan class POJO yaitu menampung properti-properti yang akan dikenal pada presentation layer MVC yang mengimplementasikan action pada Struts2.

Berikut contohnya :

  1: package com.mervpolis.struts;
  2: 
  3: import java.sql.Timestamp;
  4: 
  5: import com.opensymphony.xwork2.ActionSupport;
  6: 
  7: public class HelloWorldAction extends ActionSupport {
  8: 	private String pesan;
  9: 	private String waktu;
 10: 
 11: 	public String execute() {
 12: 
 13: 		pesan = "HELLO WORLD....!!! Method execute telah dijalankan....";
 14: 		waktu = new Timestamp(System.currentTimeMillis()).toString();
 15: 
 16: 		return SUCCESS;
 17: 	}
 18: 
 19: 	public void setPesan(String pesan) {
 20: 		this.pesan = pesan;
 21: 	}
 22: 
 23: 	public String getPesan() {
 24: 		return pesan;
 25: 	}
 26: 
 27: 	public void setWaktu(String waktu) {
 28: 		this.waktu = waktu;
 29: 	}
 30: 
 31: 	public String getWaktu() {
 32: 		return waktu;
 33: 	}
 34: 
 35: }

Contoh diatas hampir mirip dengan class POJO yang memiliki method get dan set, perbedaannya adalah action dari Struts2 memiliki method execute() yang akan dijalankan ketika client memangil action tersebut.

Tinggal kita membuat viewnya, pada bagian ini sudah saya jelaskan sebelumnya kita akan menggunakan Velocity sebagai viewer layernya, kita buat file hello.vm pada folder WebContent/view.

  1: <html>
  2:   <head>
  3:     <title>Project Struts2 Pertama</title>
  4:   </head>
  5:   <body>
  6:     <p>Pesan : $pesan</p>
  7:     <p>Waktu hari ini : $waktu</p>
  8:   </body>
  9: </html>

Sepertinya baris kode diatas sudah cukup untuk menjelaskan mengapa saya menyebut Velocity lebih simple daripada JSP. Sekarang bandingkan dengan hello.jsp berikut.

  1: <%@taglib prefix="s" uri="/struts-tags" %>
  2: <html>
  3:   <head>
  4:     <title>Project Struts2 Pertama</title>
  5:   </head>
  6:   <body>
  7:     <p>Pesan : <s:property value="pesan" /></p>
  8:     <p>Waktu hari ini : <s:property value="waktu" /></p>
  9:   </body>
 10: </html>

Nah anda tinggal pilih lebih suka menggunakan viewer yang mana.

Sekarang kita masuk ke bagian inti dari semua itu yaitu membuat file konfigurasi struts.xml yang diletakkan pada folder src. Selanjutnya kita hanya perlu memapping action yang telah kita buat ke dalam file konfigurasi ini.

  1: <?xml version="1.0" encoding="UTF-8" ?>
  2: 
  3: <!DOCTYPE struts PUBLIC
  4:     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  5:     "http://struts.apache.org/dtds/struts-2.0.dtd">
  6: 
  7: <struts>
  8:   <package name="default" extends="struts-default" namespace="/cobastruts">
  9:     <action name="HelloVelocity" class="com.mervpolis.struts.HelloWorldAction">
 10:       <result name="success" type="velocity">/view/hello.vm</result>
 11:     </action>
 12:     <action name="HelloJSP" class="com.mervpolis.struts.HelloWorldAction">
 13:       <result name="success">/view/hello.jsp</result>
 14:     </action>
 15:   </package>
 16: </struts>

Buat file index.jsp yang akan me-redirect halaman langsung ke action, file ini akan dijalankan pertama kali saat aplikasi baru dijalankan.

  1: <%
  2:   response.sendRedirect("cobastruts/HelloVelocity.action");
  3: %>

Sekarang coba jalankan aplikasi tersebut pada server dengan mengetik

http://[host]:[port]/[namaproject]/

Dan hasilnya adalah :

HasilAkhir

Selesai sudah bahasan hari ini :D Mudah bukan membuat aplikasi web menggunakan Controller Struts2, tinggal menambahkan kreativitas dan sedikit ide gila anda untuk menjadikan banyak aplikasi yang mungkin tidak pernah terpikirkan sebelumnya.

Filed under Java | 0 Comments | Permalink

Aplikasi CRUD Sederhana dengan EclipseLink

Posted on August 01, 2009 by Dian Aditya

Seperti janji saya kemarin (mungkin dulu), kali ini saya akan membahas mengenai proses CRUD dengan EclipseLink karena pada postingan saya yang terdahulu (nggak dulu-dula amat ah….) hanya membahas mengenai inisialisasi EntityManagerFactory.

Sedikit penjelasan mengenai bahasan kali ini yaitu seperti namanya CRUD merupakan proses Create, Read, Update, dan Delete suatu data ke dalam database. Mohon maaf karena kali ini saya hanya akan membahas Create-nya saja.

Ok langsung saja saya jelaskan ……

Pertama buat entity class kemudian buat konfigurasi persistence nya, untuk mempersingkat waktu silakan lihat di sini. Anda bisa memilih menggunakan persistence.xml ataupun Spring. Dalam contoh kali ini saya kan menggunakan Spring untuk inisialisasi EntityManagerFactory-nya.

Dan berikut ini script-nya

  1: package nagasakti.crud;
  2: 
  3: import javax.persistence.EntityManager;
  4: import javax.persistence.EntityManagerFactory;
  5: import nagasakti.entity.Siswa;
  6: import org.springframework.context.ApplicationContext;
  7: import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {
  8:     private ApplicationContext app;
  9:     private EntityManagerFactory emf;
 10:     private EntityManager em;
 11: 
 12:     public Main() {
 13:         app = new ClassPathXmlApplicationContext("applicationContext-EclipseLink.xml");
 14:         emf = (EntityManagerFactory) app.getBean("myEntityManagerFactory");
 15:         em  = emf.createEntityManager();
 16:     }
 17: 
 18:     public void save(Siswa siswa) {
 19:         em.getTransaction().begin();
 20:         em.persist(siswa);
 21:         em.getTransaction().commit();
 22:     }
 23: 
 24:     public static void main(String[] args) {
 25:         Siswa sis = new Siswa();
 26: 
 27:         sis.setName("Kampret");
 28:         sis.setAge("14");
 29: 
 30:         Main main = new Main();
 31:         main.save(sis);
 32:     }
 33: }

Bisa kita lihat dari baris kode diatas, inisialisasi EntityManager berada pada constructor dari class Main, sedangkan proses save data berada pada method save(). Ketika kode diatas dijalankan lihatlah keajaiban yang terjadi, secara otomatis akan terbentuk sebuah table dengan nama siswa serta di dalamnya sudah terisi satu record dengan value “Kampret, 14”. Dari contoh diatas kita bisa lihat betapa mudahnya mengimplementasikan orm pada aplikasi yang kita buat. Monggo dicoba ……..

Filed under Java | 0 Comments | Permalink