为什么Hibernate如此成功!
Hibernate实际上总是向数据库发送PreparedStatement,已经在很大程度上避免了程序员对于Statement的误用。但是即使是PreparedStatement,不用Placehold,非要把常量带入,也会出现同样的性能问题。

当where子句的条件不确定的时候,使用PreparedStatement是非常痛苦的,因为Statment可以简单的用常量代入的方式动态构造sql,而PreparedStatement的的set参数的方法是按照数字索引的,比如:
setString(1,...);
setBoolean(2,...);
就造成了动态构造的sql,你无法确定参数的1,2这样的数字顺序,除非使用很大很麻烦的if else嵌套才能够勉强解决。

但是Hibernate好在可以使用带名的Placehold,就是这样:
select * from table where user = :name

然后set参数的时候,就可以setString("name",...);
由于set参数和顺序无关,就很容易实现动态构造sql。

这也是Hibernate的一个很大的优点。

####
作者:bruce
来源:http://www.hibernate.org.cn/viewtopic.php?t=49

这应该是Hibernate好处的其中之一吧!
meiking   2005-03-15 17:56:06 评论:0   阅读:990   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

谢智的个人博客 @CSS by self