Flex Spring dan Hibernate

Filed under: by: Andi Ika

Belajar Flex dengan Spring + hibernate mungkin agak sedikit Rumit.., tapi itu awal aja. lama2 akan terbiasa..

bagi temen2 yan belum pernah kenal java ataupun flex..., belajar dulu aja, pelan2 yang penting bisa kekeke....

Okey kita mulai langsung dengan contoh..., saya harap sudah terinstall Flex Builder dan update komponen spring-nya.

disini saya tidak membahas konfigurasi flex spring dan web server-nya, terlalu banyak.

mungkin next posting akan saya tulis....

Contoh sederhana ini bukan satu2-nya cara, tapi hanya sharing salah satu cara mengambil data dari datababase.

kita ikuti step-nya...

  1. Buat contoh Class POJO-nya dengan nama POJOTES.java
  2. @Entity
    @Table(name="NAMATABEL") // nama tabel persis dengan yang ada dalam database.
    public class POJOTES implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="ID")
    private Integer ID;

    @Column(name="NAMA")
    private String NAMA;

    @Column(name="ALAMAT")
    private String ALAMAT;

    /* Setter Getter*/
    ................
    }


    Untuk Annotation @Table bisa dihilangkan.. asalkan nama kelas sama dengan tabel didatabase.
    begitu juga @Column , jika property bean-nya sama dengan field2 dalam tabel.
    @column juga bisa diletakkan diatas function Getter.
    di sini saya menggunakan annotation, menurut saya lebih simple dari pada pakek XML yang terlalu banyak konfigurasi...
    yang pakek XML silahkan atur konfigurasi di ApplicationContext.

  3. Buat Interface DAO-nya, kita beri nama Class-nya ITESDAO, berikut isi -nya :
  4. package tes.service;

    public interface ITESDAO {
    List<POJOTES> listENTITY() throws Exception;
    }


    disini saya beri nama function-nya listENTITY().
    fungsi ini akan di panggil di client dengan kembalian ArrayCollection.

  5. Buat Class implementasi-nya dengan Nama TESDAO :
  6. package tes.service;

    @Repository("tesService")
    @RemotingDestination
    public class TESDAO extends HibernateDaoSupport implements ITESDAO {
    @Autowired
    public TESDAO(@Qualifier("sessionFactory") SessionFactory sessionFactory){

    setSessionFactory(sessionFactory);

    }

    @SuppressWarnings("unchecked")
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
    public ListList<POJOTES> listENTITY() throws Exception {
    try {
    DetachedCriteria criteria = DetachedCriteria.forClass(POJOTES.class);

    Order order = Order.asc("this.ID");
    criteria.addOrder(order);

    ListList<POJOTES> result = getHibernateTemplate().findByCriteria(criteria);

    return result;
    } catch (Exception e){

    throw new Exception(e.getMessage());

    }
    }
    }


saya disini munggunakan SessionFactory untuk transaksi dengan database.
jadi kita pakek fungsi2 dalam HibernateDaoSupport agar lebih simple.
pertama kita inject sessionFactory dalam konstruktor dengan tambahan annotation @Autowired, didalamnya panggil fungsi kelas parent setSessionFactory().

jadi pada saat pertama kali scan annotation, sessionFactory sudah ready...

jangan lupa di konfigurasi springcontextnya ditambah :



<!-- Semua Annotation dalam package tes akan di scan-->

<context:annotation-config />

<context:component-scan base-package="tes"/>



<!-- Transaction manager untuk satu Hibernate SessionFactory -->


<tx:annotation-driven transaction-manager="txManager"/>


<bean id="txManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>



<!-- lokasi konfigurasi ke database , setting buat sesuai database-nya (Oracle,MySQL ....)-->

<bean id="propertyConfigurer"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="location">

<value>WEB-INF/jdbc.properties</value>
</property>
</bean>




<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

<property name="packagesToScan" value = "tes**.*"/>


<property name="hibernateProperties">

<props>

<!-- JDBC Configuration -->

.......bla bla bla.................



<!-- c3p0 Configuration -->

.......bla bla bla................



</props>
</property>

</bean>




Ok, Java sudah selesai... sekarang kita masuk dalam flex:



  1. Kita buat class action Script untuk remote Pojo:
  2. package shell
    {
    [Bindable]
    [RemoteClass(alias= "tes.entity.POJOTES")] // sama dengan java

    public final class POJOVO {
    public function POJOVO(){
    }

    public var ID :Number;
    public var NAMA :String;
    public var ALAMAT :String;
    }
    }

  3. buat variabel dengan tipe RemoteObject (disini saya pakek As3, yang pakek mxml sama saja):
  4. private var ro:RemoteObject;
  5. set Tujuan ke service class DAO... jalan lupa samakan dengan @Repository("tesService").
  6. private function InitObject():void {
    ro = new RemoteObject("tesService");

    ro.addEventListener("fault", onError);
    ro.addEventListener("result", onResult);
    }

    // Pesan Error dengan message jika terjadi kesalahan.
    private function onError(event:FaultEvent):void {
    var err:ErrorMessage = event.message as ErrorMessage;
    Alert.show(err.rootCause.message);
    }

    private function onResult(event:Object):void {
    var rsEvent:ResultEvent = event as ResultEvent;
    var allData:ArrayCollection = rsEvent.result as ArrayCollection;

    dgGrid.dataProvider = allData;
    }
  7. terakhir kita panggil fungsi java :
  8. ro.listENTITY();




Sekarang kita lihat hasilnya dalam output Flex Datagrid :




Selamat Mencoba....,semoga bermanfaat.
jika ada yang sharing langsung Contact YM.. Okey..!!!



0 comments: