当前位置: 代码迷 >> J2EE >> hibernate查询一个对象 A 跟通过查询 List<A> 的效率的差距大吗
  详细解决方案

hibernate查询一个对象 A 跟通过查询 List<A> 的效率的差距大吗

热度:323   发布时间:2016-04-17 23:43:25.0
hibernate查询一个对象 A 和通过查询 List<A> 的效率的差距大吗
在做业务查询时候,有时候就需要一个实例对象 A ,但是有时候测试数据会有两个符合条件查询的数据存在,这时候
Object A = getSession().createQuery(hSql).uniqueResult();就会报错,
较多的还是查询一个List的列表:
List<A> a = getSession().createQuery(hSql).list();查询,
就为了查询一条数据,这样的两种语句 效率差距大吗? 
------解决方案--------------------
检索单个对象
Query和Criteria都提供了返回单个对象的方法uniqueResult().
先调用setMaxResult(1)方法,把最大检索数目设为1,在调用uniqueResult()方法。

Hx hx = (Hx)session.createQuery("from Hx")
            .setMaxResults(1)
            .uniqueResult();

参考
http://blog.csdn.net/sunappro/article/details/1843467
------解决方案--------------------
createQuery这个也是个数组对象(要不然也不能转换成list),一条数据与两条数据的写入之间所消耗的时间几乎可以忽略不计,你可以用System.arraycopy去测试读写所消耗的时间,这两种都会面临高并发,但是应该是扩容或者分布去解决问题而不是这种小的细节上。
  相关解决方案