goodbye ‘struts-spring-hibernate’ and welcome ‘jsf-ejb-jpa’


prefsWalaupun kebanyakan sekarang orang menggunakan Struts1/2 untuk presentation layer, dan Spring untuk busines layer, dan Hibernate untuk persistence layer, tapi sekarang saya mau migrasi ke JSF untuk presentation layer, dan EJB untuk busines layer, dan JPA untuk persistence..

mengapa?”

tentunya saya punya alasan tersendiri 😀

tapi alasan saya belum tentu bagus untuk anda, dan alasan anda belum tentu bagus juga untuk saya 😀

walaupun saya sudah migrasi dari Struts1 ke Struts2 trus akhirnya ke JSF sudah lama, tapi pura-puranya saya baru migrasi sekarang 😀 , hehehe.

JSF

saya pindah dari struts1–>struts2 dan akhirnya ke JSF karena ketika pertama kali saya belajar JSF disitu saya melihat ada kesamaan antara konsep JSF dan Swing. yaitu berbasis komponen. sehingga hal ini membuat pembuatan halaman web sangat mudah karena berbasiskan komponen, artinya kita membuat halaman web seperti mendesain form dalam aplikasi desktop 😀

dan selain itu JSF juga mendukung Dependency Injection yang mencakup scope untuk aplikasi website seperti request, session dan application 😀 , sehingga ini bisa digunakan sebagai pengganti DI-nya milik Spring 😀

EJB

namun untuk total migrasi dari Spring ke EJB secara total mungkin baru sekarang ini, walaupun pertamanya saya belajar EJB lalu Spring dan sekarang saya balik lagi ke EJB 😀

sebenarnya banyak orang enggan menggunakan EJB karena dulu ketika EJB masih versi 2.x, EJB dikatakan sebagai nighmare (mimpi buruk) bagi pengembang, entah saya juga kurang tahu karena saya mempelajari EJB sejak versi 3, dan menurut cerita penggunaan EJB 2.x sangat komplex dan memakan resource yang boros. 😀

dan untungnya, pihak pengembang tidak putus asa dengan kegagalan EJB 2.x, sehingga sekarang saya bisa menikmati kemudahan dan kehebatan EJB 3.0 (yang katanya sebentar lagi mau keluar EJB 3.1) 😀

Sebenarnya, kemampuan EJB tidak terlalu dapat dibanggakan dengan Spring Framework yang udah begitu banyak, namun disini saya menitik beratkan EJB dan Spring sebagai busines layer, bukan yang lainnya.

satu hal yang menjadi daya tarik EJB adalah kemampuan Injectionnya yang hanya dengan menggunakan annotation @EJB, tanpa melakukan konfigurasi seperti di Spring. hal ini memudahkan kita untuk memanggil komponen EJB secara langsung tanpa harus menginjeknya lewat metode setter atau lewat konstruktor seperti yang dilakukan Spring.

Namun harus di perhatikan jika EJB hanya dapat berjalan pada server yang mendukung JEE, sehingga jika kita menggunakan server seperti Tomcat dan GlassFish v.3, maka EJB tak akan berjalan karena server-server tersebut hanya digunakan untuk WebServer, so untuk menjalankan EJB kita perlu menggunakan server seperti JBoss ato GlassFish v.2

JPA

jpa sebenarnya merupakan spesifikasi yang tergabung dalam EJB yang dinamakan EJB-Entity. namun JPA tidak selalu harus berjalan bersama EJB, karena JPA juga dapat berjalan dalam aplikasi desktop ato web sama seperti Hibernate ato TopLink.

Sebenarnya JPA bukanlah sebuah framework untuk persistence, tapi merupakan spesifikasi seperti JDBC, sehingga untuk menjalankan JPA kita memerlukan implementasinya seperti menggunakan TopLink, Hibernate, EclipseLink, OpenJPA, KODO dan yang lainnya.

sehingga JPA bisa dikatakan sebagai JDBC tingkat tinggi 😀 (ngarang), karena emang penggunaannya sangat mudah dari pada JDBC dan hampir mirip seperti Hibernate.

hanya saja karena JPA merupakan spesifikasi yang bisa diimplementasi oleh berbagai framework, sehingga bisa dibilang JPA kurang komplete jika dibandingkan dengan Hibernate, terutama dalam hal Query.

namun alasan kenapa saya memilih JPA karena hal pertama adalah JPA merupakan kesatuan EJB, sehingga penggunaannya sangat mudah dengan EJB, dan selain itu dengan bantuan EJB proses transaksi untuk JPA jadi mudah karena kita tak perlu memikirkan “TRANSACTION” untuk proses-proses persistence yang kita lakukan karena semuanya di handle langsung oleh EJB.

Dan yang paling bermanfaat adalah JPA dapat diinjek hanya dengan menggunakan annotation @PersistenceContext atau @PersistenceUnit, sehingga penggunaannya semakin mudah, dan hal ini tanpa bantuan EJB ato Spring, sehingga andai kita tak menggunakan EJB, kita tetap bisa melakukan injeksi ke JPA

Facelets + SEAM

Facelets dan SEAM merupakan framework yang patut digunakan jika kita
menggunakan JSF+EJB+JPA, karena :

dengan facelets kita dapat dengan mudah menkoneksikan antara JSP dan JSF yang kadang ditemukan berbagai kendala seperti dalam “ExpressionLanguage” misalnya. dan selain itu dengan facelets, pembuatan halaman web dapat berbasiskan template, sehingga mempermudah pembuatan halaman web ketika kita memerlukan halaman yang banyak namun memiliki kesamaan layout.

dengan SEAM, kita dapat dengan mudah mengintregasikan antara JSF dan EJB, dan selain itu SEAM mendukung facelets dan SEAM juga memiliki kemampuan yang banyak seperti kemampuan untuk menampilkan Chart, kemampuan membangun RSS, integrasi untuk Email, dan lainnya. Dan semua itu berbasiskan JSF dan EJB, sehingga SEAM akan membuat pengguna JSF dan EJB lebih termanjakan, hahahaha 😀

 

tapi tidak selamanya pendapat saya sesuai dengan keinginan anda bukan?

itu tergantung selera 😀

see you!!!


http://java.sun.com/products/ejb/

https://facelets.dev.java.net/

http://www.seamframework.org/

http://www.hibernate.org/

http://www.springframework.org/

http://struts.apache.org/

http://struts.apache.org/2.x/

Iklan

15 pemikiran pada “goodbye ‘struts-spring-hibernate’ and welcome ‘jsf-ejb-jpa’

  1. Wah canggih nih ‘oprekannya’ sudah sampai j2EE, saya msh main2 di j2SE.Dan coba2 dikit JSF..Thanks ya info-nya. Btw klo ad source yg bgs buat memulai EJB?bls ke email ya,

  2. aku baru blajar java & tertarik dengan seam…. blajarnya dari mana yaa enaknya….

    ada contoh tutorial yang step by step ga… maturnuwun….

  3. Nice post. Sekalian ada bahan diskusi nih.

    Pertama, sejak ada EJB3, untuk aplikasi yang akan dijalankan di Application Server, masih perlukah kita menggunakan Spring? Soalnya dari selentingan sekilas di internet banyak orang mengatakan, kematian Spring tinggal menunggu waktunya.

    Kedua, sejak pertama kenal Seam dan Facelets saya sudah sangat tertarik akan janji kemudahan yang ditawarkan. Namun hal tersebut terganjal dengan masih terbatasnya tool-tool yang diperlukan untuk develop. Di Eclipse mungkin ada JBoss Tool. Tapi saya adalah pengguna Netbeans, yang kurang terbiasa develop di Eclipse. Sementara develop di Netbeans, support Faceletsnya masih jauh dari sempurna. Belum lagi, mendeploy Seam di luar JBoss Aplication Server membutuhkan konfigurasi tambahan. Tapi lucunya, saya sudah jatuh cinta dengan Richfaces untuk component library JSF. Ada masukan untuk permasalahan keterbatasan tool ini? Masak saya harus ekstrim koding, pakai VI dan ANT tok.

    • @lamida

      sory nich ini kan posting lama 🙂
      sekarang gw dah ninggalin SEAM 🙂
      soalnya SEAM terbatas cuma buat JBOSUCK

      tapi tenang sekarang ada WebBeans (sama kayak seam)

      soal kematian Spring 🙂
      hmmm, kalo dibilang kematian gak bisa juga
      soalnya sekarang Spring bukan cuma buat Injection (SpringBeans)
      namanya SPring Framework tuh artinya Framaework2 SPring
      artinya dalam spring ternyata banyak sekali frameworknya
      kayak Spring Remoting, JDBC, Persistence, RCP, bahkan sekarang
      ada spring flex

      jadi susah kalo di bilang spring bakal mati 🙂

  4. bos, saya coba generate seam project. hasil generate-nya baru include jsf n seam aja yah? cara nambahin ejb-nya gmana yah? apa harus 2 project terpisah atau hanya 1 saja?

    • wah bleh dung bagi2 ilmu,q jugak baru mau belajar JPA,minim pengetahuan ni,minta tutor tau contoh Penggunaan JPA kusus na OpenJPA,di tinggu ya…

  5. Berarti Seam Framework tidak direkomendasikan ya bro?
    Btw susah banget ya di web nyari tutorial hibernate > 3.5 + JSF 2.0 + Netbeans. kebanyakan hibernate jsf netbean tapi ditambah lagi dengan spring framework.
    Apakah memang hibernate dan jsf lebih bagus dengan spring framework?

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s