0
我想弄清楚如何在(N)Hibernate中最好地使用會話。我有一個ASP.NET客戶端使用的C#遠程對象(MarshalByRefObject)。 目前我的遠程處理類在構造函數中打開一個Session實例,並將其用於所有事務。這是一個好主意嗎?我會需要一個終結器的遠程對象session.dipose()被調用?休眠會話/事務設計
每個客戶端請求都會打開一個新的事務。現在我的數據庫訪問一般是這樣的:
ITransaction transaction = this.session.BeginTransaction();
try {
// perfrom nhibernate query
transaction.Commit();
}
catch (Exception ex) {
transaction.Rollback();
this.session.Flush();
}
然後我經常返回檢索到的數據庫對象到客戶端。 這是處理這個問題的有效方法嗎?我應該在使用塊中使用事務對象還是調用Dispose()?回滾後需要session.Flush()嗎?
有時我有一個問題,當一個返回的集合綁定到一個GridView。它會拋出一個異常,指出某個對象的綁定屬性無效。這與hibernate返回代理對象有關嗎?爲什麼通過在一個查詢中進行休眠來收集對象是「真實」對象和代理對象的混合?
謝謝!