我使用这样的hql语句删除
[code="java"]
delete from User where id in(16.18)
[/code]
他发出的sql语句是:
[code="java"]
delete from t_user where id in (16 , 18)
[/code]
并没有发出查询16 18两个User对象,然后再删除这两个user对象
为什么说Hibernate批量删除效率低呢?那位解释解释
[b]问题补充:[/b]
[quote]
这个方式进行删除时,是不用对user对象进行查询了,所以效果跟JDBC一样快了,但是带来了个后果就是不能使用Hibernate的缓存了。在这里删除的数据,在缓存中是不能体现出来的,必须在后面进行主动的更新。
Java代码
session.flush();
[/quote]
session.flush(); 是将缓存数据与数据库数据同步
[quote]
这个操作带来的开销并不一定比查询出来再删除带来的开销要小的。
所以通常的删除方式是将要删除的对象找出来再进行删除。
[/quote]
“将要删除的对象找出来再进行删除。”
将事务提交时,hibernate也会执行session.flush啊
[b]问题补充:[/b]
[quote]你写HQL语句 当遇到解析不出的关键字时,Hibernate会直接把它翻译成普通的SQL语句进行操作的[/quote]
我写的HQL里面有解析不出的关键字吗?
谢谢