hibernate在删除对象的时候可以直接查找出对象后在用delete方法删除。 也可以使用hql(delete from table where id = ?)语句来删除,那么这两种方法有什么区别,为什么推荐使用第一种,先发一条查询语句再做删除,而不是直接一条查询语句删除呢? |
|
10分 |
直接用hql多好啊,你为什么说第一种好呢
|
我现在也已经混乱了,所以我想知道是主键删除好还是对象删除好? |
|
10分 |
主键删除,用hql语言写,可以大批量删除,一个个对象删,显然效率不行的啊 |
哪个性能好选哪个
|
|
hibernate 自带的删除方法就是先查出来对象,如果存在再删除,你也可以按你自己的想法写自己的方法。
|
|
感觉先查一次再删在某种情况下是可以减少误删的.但是又感觉不像,看个人爱好吧.喜欢哪个就用哪个
|
|
这个不是hibernate的规定,hibernate只是提供一种机制,让你通过对象就可以删除数据库记录。
|
|
10分 |
查出来是要看看有没有关联的对象,为级联删除做准备。 自己写当然最要好了, 直接告诉hibernate怎么做!
|
10分 |
第二种效率高,先查出来是放到session缓存中了,而后同步物理数据库!按照hibernate的思想一般是以对象为基础进行操作!
|
不是一样么??查一次就是为了看要删除的对象存在与否吧??没什么好不好的。
|
|
我也在想,该用哪种方式删除,是用单一循环删除呢,还是使用hql语句,一次性全部删除呢。从表面看第二种会比较快,但第一种会比较安全?先查询后删除?
|
|
个人认为要删除有外键关联的,并且自己为上一级的情况下采用Session的get或load方法先查一次,如果只是一个单独的表数据,可以自己手写hql语句效率会更高
|