程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> nhibernate TemplateFlushMode 設置說明

nhibernate TemplateFlushMode 設置說明

編輯:C#入門知識

關於HibernateTemplate 的 TemplateFlushMode 設置作些自己的看法

首先介紹 TemplateFlushMode,它表示數據發送到數據的模式(何時發送sql語句)
包含設置有:
  Never 從不提交,適用於只讀工作單元
  Auto  自動提交(默認方式),只在數據有變化時再提交更智能些
  Eager 馬上提交,很直接
  Commit 事務提交時再提交,也很直接

應用場景:
1.在正常情況下,使用Auto

2.該Dao只用查詢不作更改操作,請使用Never。

3.混合模式需要謹慎考慮,
當同時混合使用ORM方式和ADO.Net方式操作(指增,刪,改操作)數據時最好使用Eager模式。
否則有可能會造成錯誤的數據覆蓋。
 舉例如: 
//新聞實體類
public class News{
  public int Id{get;set;}//標識
  public string Title{get;set;}//標題
  public int ViewCount{get;set;}//點擊數
}
...
ISession Session{get;set;}
IUserDao UserDao{get;set;}

public void UpdateNews(int id,string title)
{
  //第1步:使用ORM方式查詢更新標題
   var entity=UserDao.Get(id);
   entity.Title=title;
   UserDao.Update(entity);

  //第2步:使用ADO.Net方式更新浏覽數
  Session.CreateSQLQuery("UPDATE [USER] SET [VIEW_COUNT]=[VIEW_COUNT]+1 WHERE [ID]="+id.ToString()).ExecuteUpdate();    }

分析,
 如果 TemplateFlushMode 設置為 Commit  ,第1步更新將遲於第2步造成 第2步的更新結果被覆蓋。
 此時 TemplateFlushMode  應該設置為Never,這樣第1步更新將馬上執行,第2步將在上步的基礎上進行更新,這樣才正確。 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved