论坛首页 Java企业应用论坛

SQL语句与Hibernate语句的比较

浏览 17521 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-09-13  
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的一个很大的优点。
   发表时间:2003-09-15  
可以用名字来set真是方便,不然想动态构造WHERE子句真非常麻烦。petstore中的动态构造过程就复杂,代码的可读性太差。
0 请登录后投票
   发表时间:2003-09-16  
感觉gavin是个很有经验的程序员
他很清楚程序员需要什么
0 请登录后投票
   发表时间:2003-09-16  
呵呵,看看精华区我翻译的Gavin的文章

为什么Hibernate如此成功?

可以看出他写程序的理念
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics