浏览 6852 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2003-11-03
难道是hibernate先查询出相关记录,然后取出主键,再根据主键进行删除么?如果真的是这样的话,HB是不是太呆板了. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-11-03
引用 难道是hibernate先查询出相关记录,然后取出主键,再根据主键进行删除么 对 hibernate是一个对象关系的映射工具。 若不想这样,用jdbc直接删除 java.sql.Connection conn=session.connection(); conn... |
|
返回顶楼 | |
发表时间:2003-11-03
grey_like 写道 我在session.delete时,发现在delete之前hibernate发出了select语句,这个是为什么?
难道是hibernate先查询出相关记录,然后取出主键,再根据主键进行删除么?如果真的是这样的话,HB是不是太呆板了. ORM必须这样做,否则会造成数据不同步的问题。至于性能则未必会比JDBC直接删除差,你可以看我在精华区的一个帖子的分析。 |
|
返回顶楼 | |
发表时间:2003-11-04
回斑竹大人,您在精华区的文章我拜读过了,但是对于您的观点我有所保留,主要是我面对的是一个有上百万条记录的表,您说一个select不会消耗太多的资源,但是我却需要5-6秒的时间(建立索引了)。
不发select就不能保证数据同步,这个就更不敢苟同了。不知道您所说的数据同步是不是hibernate缓冲区中的同步!望回复。 |
|
返回顶楼 | |
发表时间:2003-11-04
grey_like 写道 回斑竹大人,您在精华区的文章我拜读过了,但是对于您的观点我有所保留,主要是我面对的是一个有上百万条记录的表,您说一个select不会消耗太多的资源,但是我却需要5-6秒的时间(建立索引了)。
不发select就不能保证数据同步,这个就更不敢苟同了。不知道您所说的数据同步是不是hibernate缓冲区中的同步!望回复。 百万条记录的一次性删除, 你认为还有用Hibernate的必要吗?直接一个JDBC删了不就得了。 Hibernate删除记录之前,必须要先load该对象,判断在本Session是否已经hold了该对象,否则你删了它,而Session还不知道,继续可以读出来,岂不乱套了。 |
|
返回顶楼 | |
发表时间:2003-11-05
关于数据完整性的讲述这样我就明白了。
不过需要说明的是这上百万条记录不是一次删除的,而是删除、添加其中的几条而已,所以我认为HB这样处理比较慢。 |
|
返回顶楼 | |
发表时间:2003-11-05
grey_like 写道 而是删除、添加其中的几条而已,所以我认为HB这样处理比较慢
不会慢。 |
|
返回顶楼 | |