Integrasi Flex dan Spring

Filed under: by: Andi Ika

Seperti yang saya jelaskan sebelumnya, ada beberapa cara untuk integrasi antara Flex dan Spring.
visualisasi Flex cepat dan ringan sehingga memberikan banyak cara untuk integrasi dengan Spring Framework. Saat membuat objek Flex, dapat menggunakan remote object mengarah ke java bean di spring. Flex dapat berkomunikasi dengan berbagai layanan back-end dengan beberapa cara berbeda. Flex tidak dibatasi untuk hanya berkomunikasi melalui remote object. jadi dapat berkomunikasi secara langsung menggunakan layanan HTTP atau layanan Web. Satu hal yang membutuhkan Flex dari back-end adalah tujuan layanan di Flex dikenal sebagai endpoint. Protokol komunikasi utama yang akan kita bahas untuk integrasi flex dan spring adalah protokol RemoteObject. Dengan protokol ini, sangatlah penting untuk memahami bagaimana untuk memberikan titik akhir untuk Flex. seperti membuat sebuah gateway untuk Flex. dan dalam spring membuat kelas factory yang menyediakan gateway untuk mengakses Spring bean. dengan mendapatkan akses ke factory, berarti memiliki akses penuh ke objek-objek yang disajikan spring container. Spring factory adalah elemen terpenting yang mengintegrasikan Flex dengan Spring.

Untuk lebih jelas dan melihat contoh kecil integrasi flex dan spring menggunakan BlazeDS silahkan kunjungi:
Using BlazeDS with Spring


Contoh lain dalam blog ini Flex,Spring dan Hibernate

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..!!!