Hibernate3.0批量更新

原创 2012年03月23日 01:13:29

service层的代码:

HhCalendar obj = new HhCalendar();
HhCalendarId id = new HhCalendarId();
id.setFydesc(fYDesc);
id.setFmdesc(fMDesc);
id.setFwdesc(fWDesc);
obj.setId(id);
obj.setBeginDate(beginDate);
obj.setEndDate(endDate);
obj.setUpdateDt(updateDt);
imptMngDao.updateFiscal(obj);

dao层的代码:

public void updateFiscal(HhCalendar entity){
    this.getHibernateTemplate().update(entity);
}
加个for循环来循环service层中的代码,如果有重复的数据就会报“内存中已存在相同标识的实体对象”的错误,解决方法如下:
修改dao层中的代码

public void updateFiscal(HhCalendar entity){
    String hql = "update HhCalendar set beginDate=:param0,endDate=:param1,updateDt=:param2 " + 
                                         "where id.fydesc=:param3 and id.fmdesc=:param4 and id.fwdesc=:param5";
    Session s = this.getHibernateTemplate().getSessionFactory().getCurrentSession();
    s.createQuery(hql).setString("param0", entity.getBeginDate()).setString("param1", entity.getEndDate())
                        .setDate("param2", entity.getUpdateDt())
                        .setString("param3", entity.getId().getFydesc())
                        .setString("param4", entity.getId().getFmdesc())
                        .setString("param5", entity.getId().getFwdesc()).executeUpdate();
    this.releaseSession(s);
}
显示的用hql语句来批量更新,这样是没有问题的。

还有一种方法是使用Hibernate封装的方法,如下:

this.getHibernateTemplate().update(entity);
this.getHibernateTemplate().getSessionFactory().getCurrentSession().flush();
this.getHibernateTemplate().getSessionFactory().getCurrentSession().evict(entity);
this.getHibernateTemplate().getSessionFactory().getCurrentSession().delete(entity);
经测试,可行!

相关文章推荐

Struts2+Ibatis+Spring.30(完整例子,含3.0事务配置,OSCache缓存配置,JreeChart配置,log4j日志输出Sql,对一个表实现完整的查询,批量删除,添加,更新)

1.新建表 create table ( id int  identity(1,1) primary key, loginid varchar(10), username varchar(2...

struts2.1.8+hibernate3.2+Spring3.0+ExtJs4.2+MySql+WebSocket 更新

软件更名MyDesktop 增加在线和隐身两个用户状态 增加屏蔽群消息功能 增加修改密码功能 增加主界面加载进度条; 增加解散群恢复群功能; 增加了禁用和启用用户;...

Hibernate 批量更新

hibernate处理批量更新和批量删除 分类: javaEE2012-03-20 11:13 6200人阅读 评论(0) 收藏 举报 hibernatesession数据库jdb...

Hibernate批处理操作优化 (批量插入、更新与删除)

问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU...
  • litoupu
  • litoupu
  • 2013年11月28日 16:26
  • 1318

Hibernate 数据的批量插入、更新和删除

4.2  Hibernate的批量处理Hibernate完全以面向对象的方式来操作数据库,当程序里以面向对象的方式操作持久化对象时,将被自动转换为对数据库的操作。例如调用Session的delete(...
  • gaozhlzh
  • gaozhlzh
  • 2011年06月23日 09:58
  • 38383

hibernate批量插入,更新和删除!

14.3.2    批量插入、更新和删除        在进行大批量数据操作的时候,如果处理不当,很可能会出现执行效率低下的情况。下面首先来介绍一下批量插入数据时应该注意的问题。 14.3.2.1  ...

Hibernate批处理操作优化 (批量插入、更新与删除)

问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载...

Hibernate 批量更新数据

进行批量更新时,如果一下子把所有对象加载到session的缓存中,然后再进缓存中一一更新它们,显然是不可取的,为了解决这一问题,可以使用滚动的结果集 org.hibernate.Scrollable...

Hibernate 批量插入、更新与删除

批量插入 在项目的开发过程之中,由于项目需求,我们常常需要把大批量的数据插入到数据库。数量级有万级、十万级、百万级、甚至千万级别的。如此数量级别的数据用Hibernate做插入操作,就可能会发...

Hibernate批处理操作优化 (批量插入、更新与删除)

问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate3.0批量更新
举报原因:
原因补充:

(最多只允许输入30个字)