| 发表于:2007-01-26 15:47:1117楼 得分:0 |
随便给sg552(:)) 举个例子吧。 假设有一个用户表,10个字段,其中主键是userid,还有一个username。现在就让你列示所有的userid和username,你用hibernate怎么做?是不是这样写hql "select u from user u "? 如果你的答案是“yes”,那就已经有效率问题了! 为什么?因为我只需要你取2个字段,用到的sql是 "select userid,username from user ",而hibernate产生的sql是 "select userid,username,c1,....,c8 from user "!请不要小看这多余的8个字段!首先它消耗了数据库产生数据的时间,消耗了从数据库服务器传输到应用服务器的时间,浪费了应用服务器产生对象的时间,浪费了垃圾回收的时间,同时还虚耗了很多内存!如果你的user表不超过10k条数据,恭喜你,你不会遇到麻烦。可是如果user表有10m条数据呢?如果你见过哪个“高手”在这种情况下还是在用hibernate,请你无论如何都要提醒一下这位“高手”--存在效率问题! 当然上面的答案你可以说“no”,因为你也可以这样写hql "select u.userid,u.username from user u ",这说明你考虑了效率问题,可是很遗憾地告诉你,select出来的结果被放到object[]里面了,你要用的话,还得处理这个object[],还不如我直接处理resultset,很明显比hibernate少了一次处理过程!不过这里的效率损失倒真的微不足道。 | | |
|