hibernate为什么不能批量删除和更新? 10

我在一个人的文档中看到:Hibernate作为ORM,有一个ORM固有的问题,就是由于为了持久对象的同步,不能够使用批量删除和批量更新的sql,只能按照主键一条条来操作。... 我在一个人的文档中看到:
Hibernate作为ORM,有一个ORM固有的问题,就是由于为了持久对象的同步,不能够使用批量删除和批量更新的sql,只能按照主键一条条来操作。
这是为什么?它是怎么保持持久对象的同步的?
展开
 我来答
zhoufujin0308
2014-01-15
知道答主
回答量:1
采纳率:0%
帮助的人:1413
展开全部
不知道你用的是什么版本的hibernate,我用3.2和更高的版本都支持批量更新,这是hibernate文档中的描述
15.4.DML(数据操作语言)风格的操作(DML-style operations)updarte例子
Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();String hqlVersionedUpdate = "update versioned Customer set name = :newName where name = :oldName";int updatedEntities = s.createQuery( hqlUpdate ) .setString( "newName", newName ) .setString( "oldName", oldName ) .executeUpdate();tx.commit();session.close();

注意:使用hql中的update 和 delete是不会影响session级缓存的,如果session.get(User.class,1),那么使用hql的delete(delete from User u where u.id=1),在session没有提交之前,再次使用session.get(User.class,1),正常来讲会报错,因为数据库的数据都删除了,不可能查出来,但是仍然会查出数据,因为session.get ,update,delete 首先访问的是session级别缓存。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangyihld
2007-12-29 · TA获得超过197个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:132万
展开全部
....貌似 看不大明白
但是 确实 用HIBERNATE时候 都是为了 对象维护和操作简单
做批量的时候 我都是用的JDBC
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式