JPA 2.0 SELECT IN, How to used?

Cara menggunakan JPA SELECT IN adalah sebagai berikut :

String qlString = "select foo from Foo foo where foo.name IN :names"; 
Query q = em.createQuery(qlString, Item.class);

List<String> names = Arrays.asList("ba", "bi", "bu", "be", "bo");

q.setParameter("names", names);
List<Foo> actual = q.getResultList();


IBM BPM Integrasi dengan External Services – Java Integration

Pada dasarnya IBM BPM untuk dapat melakukan Integrasi dengan Services dari luar ada beberapa cara, yaitu :

  1. Java Integration
  2. Web Service Integaration
  3. ILOG Integration
  4. Enterprise Content Management (ECM) integration

Namun untuk kesempatan kali ini saya akan coba membahas cara mengintegrasikan IBM BPM menggunakan Java Integration. Dengan menggunakan methode ini kita akan mengakses Java API, yang sebelumnya kita upload file Java .Jar telebih dahulu ke server.Dalam contoh ini saya akan upload file bpmkaryawan.jar yang berisi validasi apakah NO. KTP yang ada di database server sudah ada(true)  atau belum(false).

Java jar Uploaf File to BPM

Java jar Uploaf File to BPM

Continue reading

Hibernate Multiple Transaction Encapsulation

Ada pertanyaan dari salah satu client, Hibernate apa bisa melakukan pembungkusan transaksi, jika dalam suatu event process yang terdiri dari lebih dari 1 (satu) transaksi, misalkan ada 10 (sepuluh) transaksi error salah satu saja, maka transaksi lainnya dibatalkan atau rollback. Jawabnya adalah Bisa. :)

Berikut ini adalah contoh salah satu cuplikan dari code yang saya buat, berdasarkan referensi dari Hibernate.


Session session = HibernateUtils.getSessionFactory().getCurrentSession();
Transaction tx = (Transaction) session.getTransaction();
if (!tx.isActive())
tx = (Transaction) session.beginTransaction();
try {
tx.setTimeout(10);
anggaran.setCreated(new Date());
anggaran.setIsDelete(0);
session.save(anggaran);

Ang00 newAngg = new Ang00();
newAngg.setId(9);
newAngg.setNo("003/N/A/2014");
newAngg.setCreated(new Date());
newAngg.setIsDelete(0);
newAngg.setNilai(CryptoUtils.encrypt(1111111.0));
session.save(newAngg);

tx.commit();
log.info(new String("Insert to Ang00DAO is success."));
return true;
} catch (RuntimeException rbe) {
tx.rollback();
log.error(new String("insert error and roll back transaction"), rbe);
return false;

} catch (Exception e) {
log.error(new String("Insert to Ang00DAO is failed."), e);
return false;
}

Continue reading

Servlet Synchronization

Servlet Synchronization digunakan untuk menghindari server menggunakan 2 thread atau lebih saat menjalankan Servlet secara bersamaan. Contohnya adalah ketika 2 instance dari Class yang sama yang method dipanggil secara bersamaan oleh dua client yang berbeda, misalnya untuk counter, treading, query transaksi yang harus berurutan, dan sebagainya. Continue reading