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