在做业务查询时候,有时候就需要一个实例对象 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去测试读写所消耗的时间,这两种都会面临高并发,但是应该是扩容或者分布去解决问题而不是这种小的细节上。