Feeds:
Posts
Comments

Eclipse Gw Yang Indah

Eclipse Gw Yang Indah

Jadi gini.. ehm…

Bangun tidur kok rasanya langsung pengen coding *bohong*

ok.. ini catetan gw hari ini, dapet ilmu baru dan gw catet daripada lupa :P

Nyampe kantor, buka fesbuk bentar, cuap2 ini itu, dan tergoda buka forum spring, disitu lagi iseng aja liat2, dan ada yang nanya gimana belajar spring dari awal, dan dikasih link nya ke sini :

http://static.springframework.org/docs/Spring-MVC-step-by-step/part1.html

hm.. hm..hm.. gw liat2 dan ew.. ada yang deploy aplikasi pake ant di bagian situ, dan gw belom pernah deploy bikin script di ant dan deploy pake ant, akhirnya pengen nyoba, gw buat aplikasi kecil aja sesuai dengan yang di contohkan di part 1 itu, dan mulai konsen ke konfigurasi ‘ant’ nya.

Gak ada klik kanan deploy undeploy, tapi untuk deploy, kita bikin script ant nya dulu.

Btw supaya script ini bisa berjalan, maka perlu dilakukan set up di environment variable di komputer yang kita gunakan, yaitu kita perlu set Variable (klik kanan di MyComputer->Properties->Advance->Environment Variable):

JAVA_HOME = [home direktori JDK]

ANT_HOME = [home direktori ant]

CATALINA_HOME = [home direktori app server tomcat]

Asumsi aplikasi atau project kita udah ada dengan nama  project = “springproject”, dan tinggal bikin konfigurasi ant nya saja :


<?xml version="1.0" encoding="UTF-8"?>
<project name="springproject" basedir="." default="usage">
<property file="build.properties"/>
<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
<property name="name" value="springproject"/>
<property name="test.dir" value="test"/>
<path id="master-classpath">
        <fileset dir="${web.dir}/WEB-INF/lib">
            <include name="*.jar"/>
        </fileset>
        <fileset dir="${appserver.lib}">
            <include name="servlet*.jar"/>
        </fileset>
<pathelement path="${build.dir}"/>
    </path>

    <target name="buildtest" depends="build" description="build test application">
        <junit printsummary="on"
            fork="false"
            haltonfailure="false"
            failureproperty="tests.failed"
            showoutput="true">
            <classpath refid="master-classpath"/>
            <formatter type="brief" usefile="false"/>

            <batchtest>
                <fileset dir="${build.dir}">
                    <include name="**/*Tests.*"/>
                </fileset>
            </batchtest>
        </junit>
        <fail if="tests.failed">
            tests.failed=${tests.failed} njrid!!
        </fail>
    </target>

    <target name="usage">
        <echo message=""/>
        <echo message="${name} build file"/>
        <echo message="------------------"/>
        <echo message=""/>
        <echo message="Available targets are:"/>
        <echo message=""/>
        <echo message="build --> Build The Application"/>
        <echo message="deploy --> Deploy Application As Directory"/>
        <echo message="deploywar --> Deploy application as a war file"/>
        <echo message="install --> Install application in tomcat"/>
        <echo message="reload --> reload application in tomcat"/>
        <echo message="start --> start application in tomcat"/>
        <echo message="stop --> stop application in tomcat"/>
        <echo message="list --> list tomcat application"/>
        <echo message=""/>
    </target>

    <target name="build" description="compile main source tree java files">
        <mkdir dir="${build.dir}"/>
        <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
            deprecation="false" optimize="false" failonerror="true">
            <src path="${src.dir}"/>
            <classpath refid="master-classpath"/>
        </javac>
    </target>

    <target name="deploy" depends="build" description="deploy application">
        <copy todir="${deploy.path}/${name}" preservelastmodified="true">
            <fileset dir="${web.dir}">
                <include name="**/*.*"/>
            </fileset>
        </copy>
    </target>

    <target name="deploywar" depends="build" description="deploy application as a war file">
        <war destfile="${name}.war"
            webxml="${web.dir}/WEB-INF/web.xml">
            <fileset dir="${web.dir}">
                <include name="**/*.*"/>
            </fileset>
        </war>
        <copy todir="${deploy.path}" preservelastmodified="true">
            <fileset dir=".">
                <include name="*.war"/>
            </fileset>
        </copy>
    </target>

    <!-- ============================================================== -->
    <!-- Tomcat tasks - remove these if you don't have Tomcat installed -->
    <!-- ============================================================== -->
<path id="catalina-ant-classpath">
            <!-- We need the Catalina jars for Tomcat -->
            <!--  * for other app servers - check the docs -->
            <fileset dir="${appserver.lib}">
                <include name="catalina-ant.jar"/>
            </fileset>
        </path>

        <taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
            <classpath refid="catalina-ant-classpath"/>
        </taskdef>
        <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
            <classpath refid="catalina-ant-classpath"/>
        </taskdef>
        <taskdef name="list" classname="org.apache.catalina.ant.ListTask">
            <classpath refid="catalina-ant-classpath"/>
        </taskdef>
        <taskdef name="start" classname="org.apache.catalina.ant.StartTask">
            <classpath refid="catalina-ant-classpath"/>
        </taskdef>
        <taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
            <classpath refid="catalina-ant-classpath"/>
        </taskdef>

        <target name="install" description="Install application in Tomcat">
            <install url="${tomcat.manager.url}"
                     username="${tomcat.manager.username}"
                     password="${tomcat.manager.password}"
                     path="/${name}"
                     war="${name}"/>
        </target>

        <target name="reload" description="Reload application in Tomcat">
            <reload url="${tomcat.manager.url}"
                     username="${tomcat.manager.username}"
                     password="${tomcat.manager.password}"
                     path="/${name}"/>
        </target>

        <target name="start" description="Start Tomcat application">
            <start url="${tomcat.manager.url}"
                     username="${tomcat.manager.username}"
                     password="${tomcat.manager.password}"
                     path="/${name}"/>
        </target>

        <target name="stop" description="Stop Tomcat application">
            <stop url="${tomcat.manager.url}"
                     username="${tomcat.manager.username}"
                     password="${tomcat.manager.password}"
                     path="/${name}"/>
        </target>

        <target name="list" description="List Tomcat applications">
	<list url="${tomcat.manager.url}"
                     username="${tomcat.manager.username}"
                     password="${tomcat.manager.password}"/>
        </target>

    <!-- End Tomcat tasks -->

</project>

gw gak copy paste doank, yang konfigurasi tomcatnya itu copy paste kok :P , dan gw butuh waktu kurang lebih 30 menit sampai satu jam untuk memahami alur2 di code itu, itupun gw nanya2 sama si arap, cuz memang ada beberapa error waktu di build :P

Di atas di setting classpath nya, trus fungsi2 deploy, build, dll dalam satu script yaitu build.xml, gw taruh build.xml ini di : springproject/build.xml

Gak perlu di jelaskan syntax2nya, cuz code2 itu sangat readable menurut gw, hehehehe.. :P

Kemudian munculkan tab ant di eclipse, dengan cara window->show view->ant

Dan script ant yang barusan gw bikin gw tambahkan ke tab ant tersebut, kalo udah, di klik 2x aja dan otomatis terbuild, dan bisa di expand di file build.xml tersebut yang udah ada di tab ant, dan akan muncul fungsi2 yang kita bikin tadi, ada deploy, build, deploywar, dll.

hohoho.. jangan lupa bikin file “build.properties” bro, karena file ini penting untuk konfigurasi ke appserver yang kita gunakan (dalam hal ini adalah tomcat) berikut isi dari file : build.properties


#Ant Properties to build springproject

appserver.home=C:/Program Files/Apache Software Foundation/Tomcat 6.0
#for Tomcat 5 use $appserver.home}/server/lib
#for Tomcat 6 use $appserver.home}/lib
appserver.lib=${appserver.home}/lib

deploy.path=${appserver.home}/webapps

tomcat.manager.url=http://localhost:8080/manager
tomcat.manager.username=admin
tomcat.manager.password=

username dan password dari tomcat menyesuaikan, yang digunakan saat penulisan blog ini adalah konfigurasi default.

ok, cukup sekian perolehan hari ini.

lanjut ntar kalo ada penemuan baru :D

All your eyes have ever seen
All you`ve ever heard
Is etched upon my memory
I spoken through my words

Dream Theater – Through In Words (Part 3)

Scene Of A Memory (Young Girl Killed)

Scene Of A Memory (Young Girl Killed)

… sambungan dari SCENE 1 & SCENE 2

SCENE 3 : Through My Words & Fatal Tragedy


Nicholas merasa sendiri malam itu, dan dia teringat akan mimpi2nya dan harus mencari jawaban atas pertanyaan-pertanyaan di mimpinya itu.

Setiap malam, dia mendengar suara tangisan, sebenernya apa maksud dari semua ini??. Nicholas mencoba untuk keluar rumah mencari jawabannya, ya.. tidak lain adalah rumah tua itu yang dituju, rumah dimana Victoria berada, duduk termenung di depan cermin, menyisir rambutnya dengan raut wajah yang bersih tapi terlihat sedih.

Ketika sesampainya dirumah itu, dia menemui seorang lelaki tua, dan dia tampak sendiri.

Nicholas : “Where is Victoria?”

Older Man : “Lad did you know a girl was murdered here?, This fatal tragedy was talked about for years”

OMG! Victoria wa gone?? yeah.. di Scene inilah tragedy itu di bahas, dan semua misteri tentang Victoria, tangisan itu, dan mimpi-mimpinya setiap malam, disinilah awal dari misteri itu.

Nicholas : “I’ll find that goddamn answers, i must!”

Older Man : “You`re on your own young man, You`ll know the truth
As your future days unfold

Dan lelaki tua itu berlalu meninggalkannya.

SCENE 4 : Beyond This Life


Seperti yang di beritakan di media massa :

Murder, young girl killed. Desperate shooting at Echoe`s hill Dreadful ending, killer died evidently suicide

A witness heard a horrifying sound
He ran to find a woman dead and
Lying on the ground

Standing by her was a man
Nervous, shaking, gun in hand
Witness says he tried to help
But he`d turned the weapon on himself

Ya, dia Victoria, gadis yang terbunuh itu. Saat itu ada seorang saksi mata, saksi mata itu (Edward Baynes) mendengar letusan pistol, dan berlari ke arah suara letusan itu. Dia berdiri di dekat lelaki yang sedang memegang pistol, lelaki itu (Julian Baynes) dengan tangan masih bergetar memandang mayat Victoria, sambil mengarahkan pistol ke arah dirinya, saksi mata itu mencoba menghentikannya, tapi terlambat, yes and he shot himself.

Kata hati Victoria lah yang menjadi kunci kenapa pembunuhan ini mesti terjadi, Victoria yang belum menemukan jawaban akan cintanya, dan terus mencari cinta sejatinya, dan dia merasa, cinta sejatinya tidak pada Julian.


Dan di saku julian, ditemukan sebuah notes, tampaknya tentang notes karena dia mau melakukan bunuh diri, karena kehilangan cinta nya.

Pembunuhan berencana? tampaknya iya, dan Kenapa Julian melakukan itu terhadap kekasihnya sendiri yaitu Victoria? apa ada sangkut pautnya dengan saksi mata yaitu kakaknya sendiri Edward Baynes?

Nicholas disini semakin jelas, titik demi titik mulai ditemukannya, dan mulai menyambungkan antar titik-titik tersebut.

…bersambung ke SCENE 5 – SCENE 6

Scene Of A Memory (1999)

Scene Of A Memory (1999)

Udah 2 bulan ini gw dengerin album Dream Theater yang bertitle “The Scene of A Memory” , gw udah sekitar 3-4 taun ini mulai keranjingan musik-musik Dream Theater, tapi baru pengen bener-bener ngedalemin setahun yang lalu, dan akhir taun kemaren gw sempet penasaran dengan cerita yang ada di albumnya yang Scene of A Memory.

Secara gak sadar, tiap hari dengerin album ini terus menerus, dan gak terasa juga gw udah 2 bulan dengerin lagu ini hampir tiap harinya.

Seperti biasa band-band Progressive lainnya, di setiap albumnya Dream Theater menyuguhkan sebuah cerita, yang bersambung baik musik maupun liriknya dari lagu ke lagu di album tersebut, bahkan album The Scene of A Memory ini adalah lanjutan dari album Metropolis Part 1.

Di album ini menceritakan kejadian masa lalu yang diceritakan di masa sekarang, di album ini juga terdapat beberapa tokoh, yaitu :

Tokoh Sekarang :

  • The Hipnotherapist
  • The Old Man
  • Nicholas (Pemeran Utama)

Tokoh Masa Lalu :

  • Victoria (The Girl)
  • Julian Baynes
  • Sen. Edward Baynes

Ok, cukup berteori, kali ini bahas album The Scene of A Memory, yang menurut gw, inilah the Greatest Album Ever! (subjective) :D

SCENE 1 : Regression


Nicholas merasa ada sesuatu yang janggal pada dirinya, dan mencoba untuk mencari akan kejanggalan itu, maka dari itu, Nicholas datang ke sebuah tukang Hipnotis (The Hypnotherapist). Disana dia mendapatkan beberapa terapi, dan inilah kata-kata The Hypnotherapist di scene pertama ini, di lagunya yang pertama :

“Close your eyes and begin to relax.

Take a deep breath, and let it out slowly.

Concentrate on your breathing. With each breath you become more relaxed. Imagine a brilliant white light above you, focusing on this light as it flows through your body.

Allow yourself to drift off as you fall deeper and deeper into a more relaxed state of mind. Now as I count backward from ten to one, you will fill more peaceful, and calm. Ten. Nine. Eight. Seven. Six.

You will enter a safe place where nothing can harm you.

Five. Four. Three. Two.

If at any time you need to came back, all you must do is open your eyes.

One.”

Dan Nicholas pun menutup matanya untuk mencari tahu, apakah sesuatu yang selalu membuat dia bertanya-tanya akan sesuatu dari mimpinya yang selalu menghantui dia.

Akhirnya Nicholas dapat masuk ke alam bawah sadarnya itu, disana dia seolah bisa merasakan suasana seperti di alam mimpinya. Dia pun bisa merasakan semua hal yang ada di mimpinya itu, seolah-olah semuanya seperti nyata.

Mimpi yang nyata, seolah kembali ke masa itu, tahun 1928, bertemu dengan gadis itu. ya.. dan gadis itu bernama Victoria.

SCENE 2 – PART I : Overture ( 1928 )

[Instrument]

SCENE 2 – PART II : Strange De Javu


Seperti yang sudah terjadi di Scene 1, Nicholas telah memasuki alam bawah sadar itu berkat bantuan The Hypnotherapist. Penyebab Nicholas ingin memasuki alam bawah sadar itu dikarenakan oleh mimpi-mimpinya yang dia rasakan tiap terlelap, setelah memejamkan mata, dan gadis itu datang, dia adalah Victoria.

Victoria tinggal di sebuah rumah tua, dan kamarnya terletak tepat di lantai atas tepat setelah tangga. Ketika Nicholas mulai menaiki tangga, dan dia melihat Victoria sedang bercermin, dia tatap wajahnya yang bersih, bahkan Nicholas sempat bertanya dalam hati “Kenapa Aku Disini?“. Nicholas memperhatikan matanya yang sayu, seolah menyimpan cerita yang tak pernah ada orang lain mengetahuinya, dan Nicholas merasakan, ada sesuatu yang aneh pada diri Victoria, dia seolah menangis, tapi tak bisa terluapkan.

Nicholas pun berjanji, malam ini dia akan mencari tau, ada apa dengan semua kejadian aneh ini. Tak ada seorang pun yang tahu, tapi dia yakin akan jawaban yang dia cari itu akan dia temui.

…bersambung ke SCENE 3 – PART I & PART II : Through My Words & Fatal Tragedy

SUMBER : Dari Sini

Jadi begini.. ehm..

Kita bikin bagian viewnya aja dulu, kita bikin pake JSP aja dan cuma satu form Person aja untuk insert ke database, kira2 begini file JSP yang sangat sederhana itu :

index.jsp


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form name="form" method="get" action="simpanPerson">

&nbsp;

&nbsp;
<table width="200" border="0">
<tr>
<td>Nama</td>
<td>&nbsp;</td>
<td><input type="text" name="nama"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
&nbsp;
</form>
</body>
</html>

file jsp ini akan dieksekusi ketika ada request dari URL : http://localhost:8080/lathibernate/

dan akan muncul sebuah form, yang akan meminta nama yang akan di masukan ke dalam database Person itu tadi. Dan ketika nanti mengklik tombol Submit maka yang terjadi adalah akan mengakses URL Pattern http://localhost:8080/lathibernate/simpanPerson

Wow.. bntar2, dimana kita mendefinisikan servlet? trus mana class servletnya? servlet itu apa?

kalo ada pertanyaan2 macam itu, ya silahkan belajar servlet dulu, gw sendiri belom terlalu banyak pake servlet, baru sekali pake servlet waktu pertengahan taun lalu, dan itu pun hanya refactoring saja. Ok fokus, kita sekarang bikin HibernateUtil untuk mendapatkan session factory yang telah kita konfigurasikan di postingan sebelum ini.

Di bagian ke dua ini gw bikin konfigurasi untuk session factory nya di java class, class ini diperlukan ketika akan melakukan transaction terhadap database, karena ketika setiap akan melakukan operasi CRUD (Create Retrieve Update Delete) terhadap database, maka hibernate menggunakan sessionFactory untuk menjalankan konfigurasi-konfigurasi yang telah kita lakukan sebelumnya menggunakan file2 konfigurasi XML hibernate.

ok, setelah googling sana-sini dan menemukan class yang gampang di mengerti dari blog ini (thx yo ki a.k.a linux gembel, gw pembaca setia blog lo).

ok, seperti ini code nya :


package lat.hibernate.utils;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    public static final SessionFactory sessionFactory;

    static{
        try{
            sessionFactory = new Configuration().configure().buildSessionFactory();
        }catch(Throwable ex){
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
}

gampang to? cuma ngambil sessionFactory dan transaction-transaction aja :D .

Setelah class HibernateUtil ini dibuat, maka kita bisa melakukan transaction terhadap database dengan memanfaatkan HibernateUtil ini. Class apa yang bertanggung jawab untuk menangani request dari view (jsp) itu? yupz, servlet, class yang berupa servlet yang nanti di registrasi via web.xml yang akan mengenali class tersebut sebagai servlet. (asumsi kalian sudah paham apa itu servlet)

langsung saja ke code class PersonServlet.java yang berfungsi untuk menangani request dari file index.jsp dalam hal ini akan menyimpan ke database Person.

PersonServlet.java


package lat.hibernate.datamodel;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import lat.hibernate.utils.HibernateUtil;

public class PersonServlet extends HttpServlet{
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{
        PrintWriter out = res.getWriter();

        try{
            HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();

            String reqNama = req.getParameter("nama");

            SimpanPerson(reqNama);
            out.println("sukses ;) ");

            HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();
        }catch(Exception e){
            HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().rollback();
            out.println(e);
            out.println("fail (LOL)");
            throw new ServletException(e);
        }
    }

    public void simpanPerson(String nama){
       Perosn p = new Person();

        p.setNamaPerson(nama);
        HibernateUtil.getSessionFactory().getCurrentSession().save(p);
    }
}

di class PersonServlet.java ini terdapat dua method, yaitu doGet dan simpanPerson. method doGet berfungsi untuk menghandle http request dari browser, seperti yang kita bikin file index.jsp diatas akan melempar variable nama, maka di method doGet ini ditangkap lah varieble-variable yang dilempar tadi di statemtent


String reqNama = req.getParameter("nama");

Di dalam method doGet ini baru akan mengakses method sesuai dengan view nya yaitu form submit untuk melakukan operasi simpan ke database, berarti dalam method doGet ini akan mengakses method simpanPerson.

Setelah sukses membuat Servlet dari file2 yang bersangkutan, maka saatnya mendaftarkan servlet tersebut ke file web.xml supaya di daftarkan di application server (tomcat) dan di kenal oleh masyarakat luas *mulai lebay*

Kira-kira begini konfigurasi file web.xml nya :


<?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" 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">
  <display-name>lathibernate</display-name>
  <welcome-file-list>
    <welcome-file>/WEB-INF/index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
      <servlet-name>Simpan Person</servlet-name>
      <servlet-class>lat.hibernate.datamodel.PersonServlet</servlet-class>
  </servlet>

  <servlet-mapping>
      <servlet-name>Simpan Person</servlet-name>
      <url-pattern>/simpanPerson</url-pattern>
  </servlet-mapping>

</web-app>

Masih ingat kan ketika kita membuat file index.jsp di atas? ketika kita membuat form dan ketika form tersebut melakukan operasi get sebenarnya adalah menuju URL : http://localhost:8080/lathibernate/simpanPerson

Lihat dalam deklarasi servlet di dalam web.xml tersebut :


<servlet>
      <servlet-name>Simpan Person</servlet-name>
      <servlet-class>lat.hibernate.datamodel.PersonServlet</servlet-class>
  </servlet>

  <servlet-mapping>
      <servlet-name>Simpan Person</servlet-name>
      <url-pattern>/simpanPerson</url-pattern>
  </servlet-mapping>

terdapat deklarasi url-pattern untuk mengakses servlet tersebut, jadi url pattern setelah url pokok adalah mengakses servlet yang bersangkutan.

URL Pokok : http://localhost:8080/lathibernate

URL Pattern : http://localhost:8080/lathibernate/simpanPerson

bagian yang di tebalkan tersebut adalah deklarasi URL Pattern untuk mengakses servlet yang bersangkutan.

Setelah semua itu dikerjakan, saya langsung menjalankan nya dengan cara : klik kanan di project -> Run As -> Run on Server

dan.. voila, keluarlah tampilan form index.

Sekian catatan dari saya, semoga dapat membantu saya pada khususnya di kemudian hari (jika lupa) dan bagi orang2 yang sedang belajar.

CMIIW

Jam 1:28 AM, Hujan, dan dingin, Ntah lah hari ini gw cuma mau merefresh kan kembali tentang Hibernate, gw udah hampir setahun pake hibernate, tapi gak begitu paham alurnya, Why? karena gw selalu menggunakan tools, dan generate sana generate sini, yang akhirnya semua dilakukan dengan instan, tiba2 udah jadi aja itu aplikasi pake hibernate.

Bagus seh, bagus buat mempercepat programmer untuk mencapai orgasme.. ooopzz.. bukan, maksud gw cepat mencapai target pengerjaan, karena tinggal klak-klik doang jadi. Jelek, yak jelek buat programmer java beginner seperti gw (njrid udah umur segini masih beginner? kemana aja lu wid?).

Hari ini gw bener2 pure mau refresh lagi tentang hibernate, pengen tau dalemannya jika tanpa generate sana-sini itu alurnya seperti apa? hm.. dan, gw mulai dari :

Buat database, dan satu table saja, males banyak2, toh konsepnya sama aja, meskipun nanti di tambahin relasi seperti one to many or many to many, tinggal cuztomize di *.hbm.xml nya.

Asumsi gw udah pake eclipse ganymede 3.4.1 yang terinstall tomcat 6.0.18, dan plugin tomcat nya untuk mendukung jalannya aplikasi.

Create Dynamic Web Project : File->New->Dynamic Web Project

New Dynamic Web Project

New Dynamic Web Project

Yak akan muncul window baru, kasih nama projectnya di text field “Project name” kemudian klik next, dan finish :D

Copy-Paste library hibernate3.jar dan mysql-connector-java-5.1.7- bin.jar ke direktori lib yang ada di WEB-INF/lib, tambahkan kedua jar tersebut ke build path project yang bersangkutan.

ok, database telah di bikin, satu tabel aja, anggap aja satu tabel Person, yang mempunyai 2 kolom, yaitu kolom id_person, dan nama_person.

Anggap saja pekerjaan create table udah selese (gampang banget itu) maka mari kita representasikan ke class java, kira2 begini jadinya :

Person.java


package lat.hibernate.datamodel;

public class Person {
    private Long idPerson;
    private String namaPerson;

    public Long getIdPerson() {
        return idPerson;
    }   
    public void setIdPerson(Long idPerson) {
        this.idPerson = idPerson;
    }
    public String getNamaPerson() {
        return namaPerson;
    }
    public void setNamaPerson(String namaPerson) {
        this.namaPerson = namaPerson;
    }   
}

class di atas adalah perwujudan dari tabel yang ada di database, untuk mapping ke database yang bersangkutan, gw butuh file Person.hbm.xml yang kebetulan gw taruh satu package saja dengan Person.java, berikut configurasi sederhana untuk mapping class Person.java tersebut dengan table Person yang ada di database, ini file nya :

Person.hbm.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="lat.hibernate.datamodel.Person"
        table="Person">
        <id name="idPerson" column="id_person">
            <generator class="increment"/>
        </id>
<property name="namaPerson" column="nama_person"/>
    </class>
</hibernate-mapping>

ok, mudah bukan? bentar wid, gimana caranya si hibernate tau, akan mengakses database yang mana dan ada di mana letak database tersebut? hooo.. jawabannya ada di file configurasi hibernate.cfg.xml, ya memang butuh file itu untuk dapat mengakses database, gak usah kawatir, file itu ada disini kok :

hibernate.cfg.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/lathibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">create</property>

        <mapping resource="lat/hibernate/datamodel/Person.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

gak perlu di jelaskan masing2, karena kalian pasti tau maksud dari statement2 diatas itu apa, ini cuma configurasi yang merujuk-kan antara aplikasi dengan database kesayangannya itu *hayah mulai lebay gw*

tahap konfigurasi dan menyambungkan aplikasi dengan database sudah selesai.

penambahan operasi save, akan di lakukan di postingan berikutnya, capek cuy, udah pagi ini :P

Diiringi lagu dari Dream Theater dari Album The Scene of A Memory, maka aku persembahkan tulisan ini kepada Widya Perwira Utama *lah itu kan gw sendiri* dan kalian2 yang emang membutuhkannya. :D

Eclipse

Eclipse

Yak, emang telat, dan gw baru tau dan benar2 memuji IDE Eclipse sebagai IDE para Lelaki Sejati *efek lebay*, hm.. sebenernya dulu gw suka pake Netbeans dengan segala ke-automatic-an nya, semuanya serba cepat, tinggal jebret sana jebret sini jadi :D , Netbeans bagus untuk developer yang memang sudah paham konsep, karena bisa mempercepat proses pengerjaan sebuah project, tapi Netbeans gak terlalu bagus buat pemula, karena programmer di manjakan dengan fasilitas-fasilitas yang ada :D , sehingga prosess pembelajaran konsep dasar sangat kurang disitu.

Beda halnya dengan Eclipse, pertengahan taun 2008 gw ngerjain project pake MyEclipse (versi berbayar dari Eclipse). Karena gw pake Spring, yang sebelumnya gw gak tau itu mahluk apa, maka gw ngrasa perlu explore dari dasar, mumpung pake Eclipse.

Ok2, basa-basi nya cukup, di artikel ini gw mau nyatet tentang konfigurasinya awal aja yaitu mencakup add server dan add spring IDE di Eclipse biar gw gak lupa, yawdah gw catet aja dah ke blog kesayangan gw ini (thx wordpress, you stole my heart)

apache_tomcat_hosting-par-0001-textimageparontextimage

Apache Tomcat

Pertama kali dan wajib, download Eclipse untuk Developer JEE disini, kemudian download tomcat the last version disini. Spring? huff.. kan gw udah bilang ini konfigurasi awalnya aja, jadi gak butuh Spring nya, tapi cukup Eclipse, Tomcat, sama Spring IDE. Spring IDE? ntar.. sabar cuy.. itu ntar kalo udah nginstall Eclipsenya, udah? download Eclipse nya udah? download tomcatnya udah? ok here we go! :D *nyruput kopi*

  1. Extract tomcatnya, dan taruh di folder yang diinginkan buat rumah si kucing tom laknat itu
  2. Udah? (OMG! gw ngejunk, gara2 kebanyakan ikut millist neh)
  3. Extract Eclipse nya ke folder yang diinginkan buat tempat berteduh si Eclipse nan indah itu
  4. Running Eclipsenya, dan akan ditanya penaruhan *alah penaruhan* workspace untuk project2 lu nanti, pilih aja sesuka jidat lu, dan sejauh mata memandang mau ditaruh mana itu project.
  5. udah kan? *nyruput kopi panas* (OMG! ngejunk lagi)
  6. Di atas ada menu bar Window kan? nah.. klik aja disitu, ntar pilih menu preferences (Window -> Preferences)
  7. Muncul Window baru kan? kalo gak muncul yo silahkan shutdown aja PC nya, trus mandi sono, udah lama gak mandi di depan kompi mulu ih.. jijix (ah sux, tulisan gw banyak ngejunk nya ini, gak serius)
  8. ehem.. ehem.. ok, sekarang serius yus..yus.. sumpah dah.
  9. huff.. capek..
  10. ok, pilih Server di window preferences yang baru muncul tadi itu
  11. Breakdown (expand) Server dan pilih Runtime Environments.
  12. Klik tombol Add dan pilih tomcat version yang barusan kamu-kamu dan lo lo semua donlot, cek list aja itu create new local server
  13. Klik Next
  14. Biarin baris nama tetap dengan namanya, yaitu Apache Tomcat v6.0, browse tomcat directory yang barusan kamu-kamu donlot dan di extract kemana itu tadi, kalo gw disini C:\Program Files\Java\tomcat, kalo lo? terserah :D , biakan aja JRE nya ke Workbench Default JRE, kemudian klik Finish
  15. udah to? nah klik Ok aja dan kembali ke tampilan Eclipse semula, eh.. tapi ada bedanya loh.. noh di susunan tab di baris bawah, ada tab Servers, isinya ya server tadi yang barusan di tambahkan :D
Spring Framework

Spring Framework

Ok, nambahin server udah selese, dan sekarang mulai nambahin Spring IDE keparat itu ke Eclipse kita tercinta (optional) :D , *nyruput kopi yang sudah mulai adem*

ow iya, sebelumnya mari kita set network dulu buat di Eclipsenya, supaya bisa donlot updates terbarunya. caranya gini : Window -> Preferences -> General -> Network Connection.

Setelah setting connection, baru lakukan langkah2 sialan berikut :

  1. Klik Help yang berada di menu tolbar atas itu
  2. ada to? kalo gak ada buruan sikat gigi dulu dan berdo’a supaya ada.
  3. Pilih menu Software Updates, ntar muncul Window baru dan pilih pada tab Available Software di window keparat yang baru muncul itu :D
  4. Tekan tombol  Add Site, kemudian isikan link ini : http://dist.springframework.org/release/IDE/site.xml , eh? gak mau? lho kok gitu, harus mau, gih buruan copy paste trus klik OK :P
  5. Trus di expand aja itu tanda “+” nya, dan ntar otomatis ngeretrieve semua update tentang spring IDE yang ada di site tersebut, dan juga update2 yang lain.
  6. OMG! Pegel juga ini leher.. huff.
  7. Ok, setelah semua di retrieve, cek list aja semua yang berhubungan dengan Spring IDE, semua yak, semua! (kalo mau, kalo gak mau yawdah gpp, ikhlas kok, emang nasibnya gini)
  8. Eclipse akan menghitung dan mencatat apa yang di cek list, dan klik OK aja setelah selesai.
  9. Pencet install
  10. udah tunggu aja selagi ngapdet, tidur dulu juga boleh, kalo kalian yang pake indosat M2 boleh belanja dulu ke pasar klewer solo or pasar johar semarang juga gpp! ntar begitu selese belanja pasti semuanya beres (kalo gak ada masalah koneksi putus di tengah jalan) :P
  11. udah kelar? restart Eclipse nya :D
  12. Selamat, sekarang Spring IDE sudah terinstall dengan baik :D

Wow, banyak juga yak gw nulisnya, seharusnya gak sampe berbelas-belas point, maafkan diriku yang terlalu banyak ngejunk dan tidak rapi :P *ngelap keringet*

Eh ada jus jeruk, ihirrr.. minum jus jeruk aja ah, sekalian ngebersihin perut gw yang tadi pagi makan indomie goreng *sruput.. sruput..sroooot.. ah…*

Ok, sip, udah, sekarang bikin sesi terakhir, bikin Dynamic Web Project :D , caranya :

  1. Klik menu File pada tool bar di atas itu, kemudian New -> Others -> Web -> Dynamic Web Project
  2. Kasih nama projectnya apa terserah, mau ProjectLaknat kek, ProjectKeparat kek, mau ProjectKurangAjar kek, terserah, whatever you want yang penting bisa bikin hati lu bahagia lahir batin dan dunia akhirat :D
  3. Klik Finish aja.
  4. Klik kanan di Project itu, dan pilih Spring Tools -> Add Spring Project Nature
  5. Uwis to? nah sekarang di drag aja ke Tab Servers yang ada di susunan tab yang di bawah itu, seret kesitu, masukan ke servernya (ini cara singkatnya)
  6. Cara sebenernya gini : Klik kanan di Project nya, trus Run As -> Run On Server.
  7. hihihihi.. udah to? :D
  8. yasudah, sekarang terserah mau di apakan itu projectnya, jangan di makan yak, cuz emang gak bisa di makan.

Hm.. udah deh, mendingan gw sekarang solat duhur dulu, biar gak lupa :D

The Miracle

The Miracle

Pengumuman Acara ini gw liat 2 minggu sebelum hari H nya, lewat situs jejaring laknat yang bisa bikin gw tongkrongin seharian itu, secara gw addicted banget ama Dream Theater, langsung lah gw kegirangan, mungkin kalo saat gw liat ada pengumuman tentang acara ini gk ada orang di sekitar gw mungkin gw udah ambil pohon kelapa buat gw jadiin tiang striptis :D , soalnya acara ini buat obat pelampiasan juga buat gw karena Dream Theater kagak manggung2 mulu dari pertama issue yang gw denger taun 2006 dulu, apalagi yang perform adalah The Miracle, band Indonesia yang patut diacungi beribu-ribu jempol karena bisa membawakan lagu2 Dream Theater dengan sangat mirip dengan aslinya, cuz setau gw Dream Theater termasuk musik Progressive Metal yang susah buat diikuti, terutama ketukan2nya yang super jahanam yang bisa ngebuat gw kadang2 gak nyangka bakal ada ketukan 7/8 :D

Pertama dateng ke E’X Plaza langsung menuju Hard Rock Cafe dan masuk (HTM 75rb – include softdrink) yak, softdrink memang jadi minuman utama gw ama waktu nonton acara itu, gile aje masa’ gw ditawarin minuman beer dan seharga 200 ribuan untuk satu pitcher bisa berempat cuz gw waktu itu berdua sama temen gw (emang cari duit gampang), duit kok buat minum doank ampe 200 ribu, jelas gw dengan halus menolak untuk minum coke aja :D

Seperti biasa, suasana remang-remang, dan yang menyita perhatian gw bukan bule2 cewe’ yang di dalem pada pake tengtop, hal kayak gitu mah biasa, justru ada sekumpulan orang yang pake baju hitam dan sebagian besar mengenakan kaos bersablon Dream Theater, ternyata mereka adalah anak2 IDTFC (Indonesian Dream Theater Fans Club) yang selama ini gw cari keberadaannya di inet, dan gw coba masuk ke situs resminya waktu itu sedang expire akhirnya gak jadi ikutan forum, tunggu sampe forumnya bisa gw akses baru gw mau daptar :D

Ngeliat anak2 IDTFC yang ngumpul banyakan gitu, dan saling canda tawa, hm.. enak kali yak nonton konser rame2 gitu :D (gw gabung kalian ASAP) dan teriak dengan bangga ketika ucapan terima kasih kepada IDTFC di sampaikan oleh MC acara tersebut :D

Konser di buka oleh band ANDA, dan kemudian setelah membawakan sekitar 4-5 lagu baru The Miracle manggung, dan otomatis orang2 langsung ke depan panggung gak terkecuali gw :D , pada awal2 gak lepas dari kamera handphone gw buat poto2 masing2 personil, dan ngerekam pembukaan acaranya :D

Karena gw nonton di depan panggung, jadi suara yang gw denger gak sempurna, karena itu indoor, jadi suara dominan justru ada di guitar (ya iyalah spekernya di depan gw banget) tapi gw tetep headbanging dari awal hingga akhir lagu (yak dari jam 21.00 – 02.00). Coba aja kalo itu outdoor, pasti suaranya bisa perfect, cuz performance The Miracle ngebawain lagu2 Dream Theater bisa di bilang nyaris Perfect! :D .

The Miracle manggung jadi dua sesi, sesi pertama ngebawain lagu2 Dream Theater dari salah satu albumnya full, yak.. betul sekali, album The Scene of A Memory di bawakan full (kalian fans abis Dream Theater pasti tau kan kehebatan album ini). Dan sesi kedua The Miracle ngebawain lagu2 Hits Dream Theater (YTSE Jam, I Walk Beside You, Metropolis, dll), sekaligus ada pembagian angpau ke penonton dengan cara di sebar oleh sang vokalis, satu amplop isinya goceng, lumayan lah, sayang gw gak dapet karena males desak2an (iya emang, gw gendut, jadi males desak2an ama yang laen).

PUAS!, yak dengan tiket 75.000 puas banget! terakhirnya gw ama temen gw nongkrong dulu cuz capek kan gile aje berdiri dari jam 9 ampe jam 2 cuy! :D , untungnya temen gw itu liat ada keyboardist nya The Miracle lewat depan dia dan disapa, hoo… langsung aja kita ikut poto2 bareng The Miracle dan pengunjung2 lainnya :D , setelah itu salam2an bareng sama The Miracle dan pengunjung lainnya yang foto bareng, dan pulang, tidur ampe siang!

Dream Theater

Dream Theater

OMG! Kenapa lagu2 mereka sangat addictive banget buat gw

Steven n Coconut Trees

Steven n Coconut Trees

yang penting aku gak nipu
gak bikin susah kalian
yang penting gak terlibat
3, 7, 8 ….

Lyric By : Steven n Coconut Trees – Bebas Merdeka

Hm.. emang teramat sangat telat untuk menyadari bahwa band ini ternyata memiliki lyric-lyric serta musik yang asik banget. Berawal dari liat v-clip nya yang “Burning You With My Fire” di TV, dan minta temen untuk share beberapa lagunya buat gw dengerin, dan ternyata sambil coding dan dengerin musik nya mereka yang sangat nyantai sekali itu :D bisa bikin relax, dan yang jelas lyricnya kebanyakan nyeritain realita kehidupan sehari2, gak cinta2an mulu :P

Beberapa lyric yang menarik dan sekaligus penyemangat adalah lagu ini “Burning You With My Fire” berikut lyricnya :

With lovely sound of ocean waves
And we give all the problem there’s no space

Why you’re so disguised
Why you’re so petrified

‘Cos I am here just to be by your side
You should know that I’m gonna treat you right
And heal the pain you feel inside
We give a peace a chance
And there is no fight again

Get up and get life in better way
Get up and never give up
I’ll be around you, I’ll be around for you

Burning you with my fire
Yes, I’m on my fire, to make you fly
Leave all troubles behind
Burning you with my fire
Yes, I’m on my fire, to make you fly
And let all troubles gone away

Mantep banget deh, apalagi buat di setel di kosan kalo pas pagi2 habis bangun tidur neh, setau gw di lagu itu menyampaikan marilah kita semangat menjalani hidup ini, selalu lebih baik dan lebih baik, berusaha untuk tidak menyerah dalam menjalani hidup, dalam menjalani hidup ini pasti selalu ada masalah, bahkan seharusnya kita harus mencari masalah (bukan membuat masalah) untuk menaikan level kita :D , pas banget kan sama lyric diatas,  Get Up and Get Life, in a better way, Get Life and Never Give Up .

Itu baru satu lagu yang gw bahas, lagu2 lainnya yang bagus menurut gw adalah : Bebas Merdeka, Serenada, Tersenyum Kembali, Welcome to My Paradise, Horny Horny (lagu yang ini agak sedikit adult lyric).

Ok, Semangat ya buat Steven n Coconut Trees, keep on going bro! mantap sekali musik kalian ini! :D

Spring 2.5

Spring 2.5

Malem itu gw lagi refreshing tentang configuration di Spring, coba refresh lagi gimana cara bikin project pake Spring Framework dari awal, tanpa banyak basa-basi gw langsung buka lah itu My Eclipse 6.5, dan mulai create new project, tapi.. oops kelupaan, sebelumnya gw bikin 2 tabel di database dulu yaitu tabel Car dan Pemilik dengan relation Pemilik ke Car adalah One to Many.

Postingan ini lebih diperuntukan buat gw khususnya, daripada lupa dan ubek2 kompie, mendingan cari di inet jadi bisa di akses dimanapun selama masih ada koneksi inet :D

Setelah bikin tabel, gw mulai bikin class Datamodel yang merepresentasikan 2 tabel di atas ke class di Java menggunakan Hibernate 3.0. Berikut adalah source code nya :

Pemilik.java :


package carshop.datamodel;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="pemilik", catalog="carshop")
public class Pemilik {
    //field
    int idPemilik;
    String nama;

    @Column(name="id_pemilik", unique=true, nullable=false)
    @Id
    @GenericGenerator(name="generator", strategy="increment")
    @GeneratedValue(generator="generator")
    public int getIdPemilik() {
        return idPemilik;
    }
    public void setIdPemilik(int idPemilik) {
        this.idPemilik = idPemilik;
    }
    public String getNama() {
        return nama;
    }
    public void setNama(String nama) {
        this.nama = nama;
    }

}

Car.java :

package carshop.datamodel;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="Car", catalog="carshop")
public class Car {
	//field
	int idCar;
	String merek;
	Pemilik pemilik;

	@GenericGenerator(name="generator", strategy="increment")
	@Id
	@GeneratedValue(generator="generator")
	@Column(name="id_car", unique=true, nullable=false)
	public int getIdCar() {
		return idCar;
	}
	public void setIdCar(int idCar) {
		this.idCar = idCar;
	}
	public String getMerek() {
		return merek;
	}
	public void setMerek(String merek) {
		this.merek = merek;
	}

	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="id_pemilik", nullable=false)
	public Pemilik getPemilik() {
		return pemilik;
	}

	public void setPemilik(Pemilik pemilik) {
		this.pemilik = pemilik;
	}
}

Setelah membikin 2 class java di package Datamodel, sekarang saatnya bikin class DAO (Data Access Object) yang akan melakukan operasi-operasi terhadap class-class yang ada di package Datamodel tersebut, pertama kita membuat Interface dulu yang akan di taruh dalam package dao :

PemilikDao.java :


package carshop.dao;

import carshop.datamodel.Pemilik;

public interface PemilikDao {
    public boolean savePemilik(Pemilik pemilik);
    public boolean deletePemilik(Pemilik pemilik);
    public boolean updatePemilik(Pemilik pemilik);
    public Pemilik getPemilik(Pemilik pemilik);
}

CarDao.java :


package carshop.dao;

import carshop.datamodel.Car;

public interface CarDao {
    public boolean saveCar(Car car);
    public boolean deleteCar(Car car);
    public Car getCar(int idCar);
    public boolean updateCar(Car car);
}

Yak, setelah kita punya interface dari class-class dao, maka sekarang saatnya gw buat class-class implementasi dari interface tersebut, berikut implementasinya :

PemilikDaoImpl.java :


package carshop.dao.impl;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import carshop.dao.PemilikDao;
import carshop.datamodel.Pemilik;

@Repository("pemilikDao")
@Transactional(readOnly=true)
public class PemilikDaoImpl extends HibernateDaoSupport implements PemilikDao{

    @Autowired
    public PemilikDaoImpl(SessionFactory sessionFactory){
        setSessionFactory(sessionFactory);
    }

    @Transactional(readOnly=false)
    public boolean deletePemilik(Pemilik pemilik) {
        // TODO Auto-generated method stub
        return false;
    }

    public Pemilik getPemilik(Pemilik pemilik) {
        // TODO Auto-generated method stub
        return null;
    }

    @Transactional(readOnly=false)
    public boolean savePemilik(Pemilik pemilik) {
        boolean result = false;
        try{
            getHibernateTemplate().save(pemilik);
        }catch(Exception e){
            e.printStackTrace();
        }

        return result;
    }

    @Transactional(readOnly=false)
    public boolean updatePemilik(Pemilik pemilik) {
        // TODO Auto-generated method stub
        return false;
    }

}

CarDaoImpl.java


package carshop.dao.impl;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import carshop.dao.CarDao;
import carshop.datamodel.Car;

@Repository("carDao")
@Transactional(readOnly=true)
public class CarDaoImpl extends HibernateDaoSupport implements CarDao{

    @Autowired
    public CarDaoImpl(SessionFactory sessionFactory){
        setSessionFactory(sessionFactory);
    }

    @Transactional(readOnly=false)
    public boolean deleteCar(Car car) {
        // TODO Auto-generated method stub
        return false;
    }

    public Car getCar(int idCar) {
        // TODO Auto-generated method stub
        return null;
    }

    @Transactional(readOnly=false)
    public boolean saveCar(Car car) {
        boolean result = false;
        try{
            getHibernateTemplate().save(car);
            result = true;
        }catch(Exception e){
            e.printStackTrace();
        }

        return result;
    }

    @Transactional(readOnly=false)
    public boolean updateCar(Car car) {
        // TODO Auto-generated method stub
        return false;
    }

}

Dalam latihan Spring kali ini, tidak ada bussines logic yang ribet, jadi semua bisa di handle dari class-class dao, lain lagi jika terdapat bussiness logic yang lumayan ribet, jika udah banyak logic yang mesti di implementasi, maka lebih baik bikin satu package lagi yaitu package service yang didalamnya terdapat class yang khusus menangani business logic dari project itu sendiri yang akan mengakses class-class dao, sehingga maintenance akan lebih fokus ke package service jika terdapat perubahan logic.

Dan sekarang gw bisa bikin configuration di applicationContext.xml yang merupakan root dari application pake Springnya, semua configuration bisa di set disini, kira-kira config untuk applikasi ini kayak gini :


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:jee="http://www.springframework.org/schema/jee"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xsi:schemaLocation="
   http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
   http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
   http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
   http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
   http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

<context:annotation-config/>
<context:component-scan base-package="carshop"/>
<tx:annotation-driven/>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
        <value>com.mysql.jdbc.Driver</value>
    </property>
<property name="url">
        <value>jdbc:mysql://localhost:3306/carshop</value>
    </property>
<property name="username">
        <value>root</value>
    </property>
<property name="password">
        <value>root</value>
    </property>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="annotatedClasses">
	<list>
            <value>carshop.datamodel.Car</value>
            <value>carshop.datamodel.Pemilik</value>
        </list>
    </property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
                org.hibernate.dialect.MySQLDialect
            </prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.generate_statistics">false</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

</beans>

Nah, di Spring 2.5.5 ini ada keunggulan di spring-spring sebelumnya, yaitu di masing-masing class Java yang akan di kategorikan sebagai bean di Spring wajib di berikan annotation ‘@’ di atas sebelum class tersebut, berikut dengan jenis transaction database yang akan di operasikan menggunakan class tersebut, apakah read only atau bisa write ke database, nah config itu ada di applicationContext tersebut bagian yang ini :


<context:annotation-config/>
<context:component-scan base-package="carshop"/>
<tx:annotation-driven/>

code itu pada bagian context component scan base package nya terdapat di package carshop, maka Spring akan men-scan mana saja bean yang terdapat di package tersebut dengan berdasarkan annotation tadi, jadi gak di tulis satu-satu lagi per bean di appliactionContext.xml seperti sebelumnya, cukup 3 baris code diatas yang dilakukan sehingga lebih simple dan manusiawi :D

Ok, setelah bikin class dao, gw bikin main class untuk mencoba class-class dao. Main classnya sederhana kok, class paling gampang sedunia :

CarshopMain.java


package carshop.main;

import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;

import carshop.dao.CarDao;
import carshop.dao.PemilikDao;
import carshop.datamodel.Car;
import carshop.datamodel.Pemilik;

public class CarshopMain {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Pemilik pemilik = new Pemilik();
        PemilikDao pemilikDao;
        CarDao carDao;
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        Car car = new Car();

        pemilik.setIdPemilik(1);
        pemilik.setNama("dian");
        pemilikDao = (PemilikDao) ctx.getBean("pemilikDao");
        pemilikDao.savePemilik(pemilik);

        car.setMerek("ferari");
        car.setPemilik(pemilik);
        carDao = (CarDao) ctx.getBean("carDao");
        carDao.saveCar(car);
    }

}
Loenpia.net Komunitas Blogger Semarang

Loenpia.net Komunitas Blogger Semarang

Pesta Blogger 2008 pada tanggal 22 November 2008 yang lalu udah selese, dan sekarang banyak blog-blog yang mengulas tentang acara tersebut. Salah satu blog yang ngebahas dan gw baca karena tertarik sama video-video nya itu adalah Goenrock, salah satu contact gw di plurk. Eh dari video-video profile yang dia buat ada profile beberapa komunitas blogger yang datang ke PB ‘08 itu, salah satunya adalah komunitas blogger Semarang yang memiliki portal di www.loenpia.net. Dan disamping itu gw sering maen ke Semarang jenguk pacar, dan gw juga lama tinggal di Jepara, pernah ngekos di Semarang juga selama 2 bulan gara2 ikut bimbel, jadi ya sedikit banyak gw tau Semarang dan logat2nya macem : Ndes, Ndha, ik, dan lain2 yang pastinya sudah sangat kental di otak saya kalo itu adalah logat Semarangan :D

Komunitas blogger Semarang ini berdiri pada 15 Oktober 2005 ini bertujuan untuk memasyarakatkan dunia per-blog-an tanah air khususnya di Semarang dan sekitarnya, dan komunitas ini sekalian mempromosikan lokasi-lokasi wisata dan keaneka ragaman budaya yang ada di Semarang serta kuliner maupun sejarah dari kota Semarang ini.

Nah, gw yang masih tergolong nubi di dunia per-blog-an ini merasa ingin gabung ke sebuah komunitas blog dimanapun asal masih satu nyambung satu sama laen, dan ternyata gw nemu komunitas ini dan inisiatif untuk gabung sekaligus nambah temen dan share2 info tentang dunia per-blog-an :D

Seperti mailing list pada umumnya pasti ada aja saat2 ospek yaitu perkenalan anggota baru ke anggota lama, yak sekarang gw dengan sukses subscribe dan menjadi anggota baru (tukang loenpia baru) di milist tersebut, setelah gw kenalan dan di bilang “Jeruk Jangan Riwil” dari anggota yang lain, gw pun manut aja, nongkrongin millist seharian dan bertahan untuk tidak reply dan klik send di tiap thread yang gw baca cuz di suruh liat alur dulu bagi tukang loenpia yang baru join, jiahahahah.. *nyiksa,padahal gw pengen balesin*, sempet di tegur juga sama pak Kamtib gara-gara nge-reply dengan tidak sesuai aturan :D (maap pak kamtib)

Setelah di suruh seharian nongkrongin millist, hari ini akhirnya gw reply thread yang lagi ngobrolin tentang acara kopdar di wetiga, karena tertarik ywdah gw bales aja, dan untunglah di tanggepin baik sama mbak wiwik dan gw disuruh setor biodata lengkap jadi ntar kalo ada kopdar gw di hubungin :D

Moga bermanfaat bagi gw dan gw bisa bermanfaat bagi komunitas ini, jadi gw gak ngerasa useless di komunitas :D , mohon pencerahannya :D huahahahaha…

ttd : Widya Perwira a.k.a Gozui

« Newer Posts - Older Posts »