Dear all,
Sebenarnya saya menggunakan NHibernate namun dasar belajarnya dari Hibernate
Saya melakukan insert data menggunakan native query ke oracle untuk tipe
data sdo_geometry(Blum tahu cara mappingnya ke Custom Type dalamC# :( ).
Nah pertanyaannya gimana agar query ini tetap satu transaksi dengan trasaksi
Hibernate dengan harapan moga2 NHibernate 1.2 udah mendukung,
 Di NHibernate saya melakukan dengan cara sbb :
<code>
 dao.Save(entity);
</code>
Perintah diatas untuk menyimpan data tanpa geometry column. tanpa memanggil
<code>
 dao.CommitChanges(entity);
</code>
maka perintah sql query untuk melakukan updating geometry column berikut
tidak mengupdate baris, karena object entity masih berada di cache.
<code>
IDbCommand command = NHibernateSession.Connection.CreateCommand();
 NHibernateSession.Transaction.Enlist(command);
 command.CommandText = sql;
 command.ExecuteNonQuery();
</code>
untuk sessionnya
<code>
 private static ISession NHibernateSession
 {
            get
            {
                return NHibernateSessionManager.Instance.GetSession();
            }
  }
</code>


Aplikasi ini membuka sessioan pada saat HttpApplication start dan melakukan
commit semua transaksi pada saat HttpApplication end;
Pengennya sih tetap tanpa memanggil
<code>
 dao.CommitChanges(entity);
</code>
jadi semua transaksi tetap di commit sekali.

Catatan : variable dao merupakan interface dari layer Core ke layer Data
yang diakses menggunakan CastleWindsor(IOC Contianer) yang dinisialisasi
saat HttpApplication start

Thanks atas bantuannya, kepanjangan :D
pengenbalikkejavalagisetelahiniselesai

Kirim email ke