nhibernate TemplateFlushMode 设置说明_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > nhibernate TemplateFlushMode 设置说明

nhibernate TemplateFlushMode 设置说明

 2013/9/28 12:51:27  jacky深蓝  博客园  我要评论(0)
  • 摘要:关于HibernateTemplate的TemplateFlushMode设置作些自己的看法首先介绍TemplateFlushMode,它表示数据发送到数据的模式(何时发送sql语句)包含设置有:Never从不提交,适用于只读工作单元Auto自动提交(默认方式),只在数据有变化时再提交更智能些Eager马上提交,很直接Commit事务提交时再提交,也很直接应用场景:1.在正常情况下,使用Auto2.该Dao只用查询不作更改操作,请使用Never。3.混合模式需要谨慎考虑
  • 标签:hibernate
关于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步将在上步的基础上进行更新,这样才正确。 

 

发表评论
用户名: 匿名