Hibernate每次返回一个List集合或者一条实体信息的时候总是读取全部数据,这样的方式会耗掉太多内存,怎样才能不读出全部数据,而是我需要哪些就读取哪些呢?
比如有一个类User,我在读取这个类在数据库中数据,只需要name和pass两个字段的数据,我的HQL语句如下:
SELECT e.name,e.pass FROM User u 
然后将其封装在一个List<Object[]>集合中,这样也能达到我的目的,或者创建一个构造方法,采用构造赋值的方式。
除了这两种方式,还有没有更好的方式呢?请大家说说!

解决方案 »

  1.   

    偶一般用后一种,在User里写一个带name、pass参数的构造方法,select里构造。
      

  2.   

    利用hibernate的缓存机制可以提高效率。
    配置二级缓存,这样的话第一次查出来的数据会放到二级缓存中,当你再次要查这个数据时它会先到一级缓存中去找,如果一级缓存关闭或在一级缓存中找不到的话就再到二级缓存中去找,在二级缓存中找到了就返回,就不会发出sql到数据库中去查了,这样的话效率会有所提高。
      

  3.   

    你说的这个其实就是惰性加载,配置文件里lazy相关的就是了
      

  4.   

    声明一下,我使用的是Annotation注解!
      

  5.   

    没大区别,annotation是@Basic(fetch=LAZY) 
    普通配置文件是<property name="text" length="2000" lazy="true"/>
      

  6.   

    路过学习中,现在学校教的也是hibernate,不知道企业里开发有什么要求
      

  7.   

    自己编写hql语言,注意要在对象bean中编写与你hql语句查询项对应的构造函数,如果查询项中有日期,还要注意日期的类型!