1、原生SQL,为复杂查询提供帮助
getUser(){
SQLquery q=session.createSQLQuery("select {u.*} from users u where username='"+username+"'",u);
q.addEntity("u",Users.class);//u是表的别名
return (Users)q.setMaxResults(1).uniqueResult();
}
2、Query的list与iterator
引用
robbin:
众所周知,List仅仅会填充二级缓存,却不能利用二级缓存,而iterator可以读二级缓存,然而无法命中的话,效率却很低。一个最好的办法就是,第一次查询使用List,随后的查询使用iterator,现在的问题是如何做到第一次查询使用List,随后查询使用iterator。
先来考察一下缓存的作用:缓存之所以可以命中,前提条件是该数据被使用的非常频繁,同时更新的可能性相当小,如果数据会频繁修改,那么毫无疑问,缓存不会带来任何好处。明确了这一点,我们就明白什么对象应该进行缓存了。显然,对于那些经常会被访问到的小批量的诸如基础信息,用户和权限信息是非常适合进行缓存的,这些数据我们可以在应用启动的时候就执行一次list方法查询,进行缓存填充(例如写一个InitBean类进行数据缓存初始化),此外在数据被修改的时候,再次执行list方法,进行缓存填充。而在使用这些数据的其他地方,统统使用iterator方法。这样就可以实现所谓的第一次查询使用List,随后的查询使用iterator了。
但在我的测试中,iterator方法首先会检索符合条件对象的OID(
延迟加载其他属性!),当使用对象的非OID属性时,会再次发出SQL语句检索对象(不知道是在缓存还是数据库?),也就是说检索了两次,这样性能会像robbin说的比list高吗?(表示怀疑)
分享到:
相关推荐
6. **社区支持**:作为开源项目,`json-iterator-go`有活跃的社区支持,持续维护和更新,确保了其与Go语言的最新版本保持同步。 在使用`json-iterator-go`时,开发人员可以按照以下步骤进行: 1. 引入库:首先,...
c++ 的array源码分析和reverse-iterator和-Array-const-iterator类
本教程将重点讲解在使用Hibernate时,如何处理查询结果集合,特别是通过`list()`和`iterator()`方法进行数据迭代的操作。 【描述】"http://blog.csdn.net/e421083458/article/details/8794127" 这个链接指向的是一...
6. **兼容性**:由于`async-iterator-all`依赖于ES6的生成器和异步生成器特性,因此在不支持这些特性的旧版本浏览器中可能无法直接运行。可以借助Babel等转译工具进行兼容处理。 总的来说,`async-iterator-all`是...
根据提供的文件信息,本文将深入探讨Java中的`java.util.Iterator`接口及其在集合类中的应用。我们将从以下几个方面进行详细解析: ### 一、集合类的根接口:Collection `Collection`接口是Java集合框架的基础,它...
4. **Query**: 用于执行HQL(Hibernate Query Language)或原生SQL查询。 5. **Lazy Loading**: 惰性加载机制,用于延迟加载关联对象。只有当真正需要访问关联对象时,Hibernate才会发起数据库查询来获取数据。 6. *...
分析-Iterator-base12与-Container-base12
它支持多种查询方式,包括面向对象的查询语言(HQL)、条件查询(Query By Criteria, QBC)、示例查询(Query By Example, QBE)以及原生SQL查询等。 #### 二、面向对象查询语言 (HQL) HQL是一种类似SQL的语言,但...
`php-multi-level-array-iterator-master`这个项目很可能包含了完整的实现和示例,你可以下载并研究其代码,以获取更多关于如何在Laravel环境中创建和使用多级数组迭代器的详细信息。 总之,理解并掌握Laravel的...
迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 何时使用迭代器模式? 当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,需要考虑使用迭代器...
`Query`的`list`和`iterator`方法的不同 - **5.1 `Session`的`load`与`get`方法** - **`load`方法**: - 当Session缓存中未找到匹配对象时,会抛出`ObjectNotFoundException`异常。 - 可以返回实体的代理类实例...
《Hibernate难点解析与...理解并灵活运用uuid、get()与load()以及iterator()和list()的区别,是每个Hibernate开发者必备的技能。通过深入学习这些难点,开发者能够更好地驾驭Hibernate,从而提升项目的稳定性和性能。
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
Triangular类,包含对Triangular类的提领操作Triangular_iterator类,以及异常类iterator_overflow。 输入输出样例为: (3,6) Triangular Series of 6 elements 6 10 15 21 28 36
开源项目“thrift-iterator-go.zip”是一个基于Go语言实现的工具,用于解码和编码Thrift消息,而无需依赖Thrift接口定义语言(IDL)。Thrift是一种跨语言的服务开发框架,由Facebook开源,旨在提供高效、轻量级的...
以上介绍了Hibernate中几种常见的查询方式,包括HQL、QBC、原生SQL以及一些高级查询技巧如分组、排序等。掌握这些基本操作可以帮助开发者更高效地使用Hibernate框架进行数据访问操作。随着实践经验的积累,还可以...