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...
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...
- Buat contoh Class POJO-nya dengan nama POJOTES.java
- Buat Interface DAO-nya, kita beri nama Class-nya ITESDAO, berikut isi -nya :
- Buat Class implementasi-nya dengan Nama TESDAO :
@Entity
@Table(name="NAMATABEL") // nama tabel persis dengan yang ada dalam database.
public class POJOTES implements Serializable {
@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*/
................
}@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.
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.
package tes.service;
public interface ITESDAO {
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.
fungsi ini akan di panggil di client dengan kembalian ArrayCollection.
package tes.service;
@Repository("tesService")
@RemotingDestination
public class TESDAO extends HibernateDaoSupport implements ITESDAO {
@Repository("tesService")
@RemotingDestination
public class TESDAO extends HibernateDaoSupport implements ITESDAO {
@Autowired
public TESDAO(@Qualifier("sessionFactory") SessionFactory sessionFactory){
}
@SuppressWarnings("unchecked")
@Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
public ListList<POJOTES> listENTITY() throws Exception {
}
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){Order order = Order.asc("this.ID");
criteria.addOrder(order);
ListList<POJOTES> result = getHibernateTemplate().findByCriteria(criteria);
return result;
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 :
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"
<!-- lokasi konfigurasi ke database , setting buat sesuai database-nya (Oracle,MySQL ....)-->
<bean id="propertyConfigurer"
<bean id="sessionFactory"
<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><property name="sessionFactory"><ref local="sessionFactory"/></property>
<!-- lokasi konfigurasi ke database , setting buat sesuai database-nya (Oracle,MySQL ....)-->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
</bean><property name="location">
<value>WEB-INF/jdbc.properties</value>
</property><bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="packagesToScan" value = "tes**.*"/>
<property name="hibernateProperties">
</bean><property name="packagesToScan" value = "tes**.*"/>
<property name="hibernateProperties">
<props>
<!-- JDBC Configuration -->
.......bla bla bla.................
<!-- c3p0 Configuration -->
.......bla bla bla................
</props>
</property><!-- JDBC Configuration -->
.......bla bla bla.................
<!-- c3p0 Configuration -->
.......bla bla bla................
</props>
Ok, Java sudah selesai... sekarang kita masuk dalam flex:
- Kita buat class action Script untuk remote Pojo:
- buat variabel dengan tipe RemoteObject (disini saya pakek As3, yang pakek mxml sama saja):
- set Tujuan ke service class DAO... jalan lupa samakan dengan @Repository("tesService").
- terakhir kita panggil fungsi java :
package shell
{
{
[Bindable]
[RemoteClass(alias= "tes.entity.POJOTES")] // sama dengan java
public final class POJOVO {
}
[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;
}
}
public var ID :Number;
public var NAMA :String;
public var ALAMAT :String;
private var ro:RemoteObject;
private function InitObject():void {
// Pesan Error dengan message jika terjadi kesalahan.
private function onError(event:FaultEvent):void {
private function onResult(event:Object):void {
ro = new RemoteObject("tesService");
ro.addEventListener("fault", onError);
ro.addEventListener("result", onResult);
}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);
} 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;
}
var allData:ArrayCollection = rsEvent.result as ArrayCollection;
dgGrid.dataProvider = allData;
ro.listENTITY();
Sekarang kita lihat hasilnya dalam output Flex Datagrid :
Selamat Mencoba....,semoga bermanfaat.
jika ada yang sharing langsung Contact YM.. Okey..!!!
0 comments: