浏览 3980 次
锁定老帖子 主题:在级联增加时使用的SQL语句的数目问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2003-11-18
后来,我将他们之间 的级联关系修改为all,目的是使删除主表时可以同时删除从表中的数据,并且可以级联地插入或修改数据,这样我将他们文章的关系设置好后,只在主表对象上调用了save方法,但这时总共显示了3000条SQL语句,我检查了一下插入的结果是对的,但为什么两种做法显示出的SQL语句的数目不同呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-11-24
难道没有人知道吗?
|
|
返回顶楼 | |
发表时间:2003-11-24
Session session = openSession();; Transaction tx = null; try { tx = session.beginTransaction();; for (int i = 0; i < 10; i++); { Cat cat = new Cat();; session.save(cat);; //session.flush();; } tx.commit();; } catch (Exception e); { if (tx != null); { tx.rollback();; } throw e; } finally { session.close();; } 你可以看看注释掉session.flush();和保留它 这两种情况下打出的sql数目有什么不同。 |
|
返回顶楼 | |
发表时间:2003-11-24
yehs220,谢谢回复!
我知道你的意思,但我说的还不是这样,我在代码中并没有使用flush方法。只是调用了save方法,然后commit。对于相同的代码只是修改了hbm.xml中的级联方式就产生了不同的效果。 我想原因可能是(不知道对不对),由于Hibernate在对数据库操作时会使用Batch进行操作,当没有使用级联时,对于每一个表它会使用一个批进行处理,所以在屏幕上看到的就是一个SQL语句;而当使用级联时,对于每一个主表,在插入时都会同时检查从表中的相关记录,这样对于主表中的每一个记录都会对应一条SQL语句,相应的从表也会在插入主表记录时对就一条,这样主表中有多少条记录的话,就会有多少组相同的SQL语句了(我看了一上SQL语句的信息,对于一对多的情况,在插入时从表的SQL语句还是只有一条)。 |
|
返回顶楼 | |
发表时间:2003-11-24
《论坛提问的智慧》第四条
|
|
返回顶楼 | |
发表时间:2003-11-25
robbin 写道 《论坛提问的智慧》第四条
对不起,我的实际情况太复杂就想先说明一下,应当说的比较明白吧 |
|
返回顶楼 | |