`

单件HibernateTemplate的setMaxResults的问题

阅读更多
HibernateTemplate指的就是spring里面,一般注入给DAO类的模板类,取得方式为getHibernateTemplate()。可以有两种方式注入DAO而取得封装过的模板类。一种是注入LocalSessionFactoryBean,一种是直接注入HibernateTemplate。无论是那种,都可以直接getHibernateTemplate()。而由于HibernateTemplate是轻量级的,所以,注入LocalSessionFactoryBean,每次获取新的HibernateTemplate也不是问题。不过,由于HibernateTemplate是线程安全的,所以可以考虑给DAO类注入同一个HibernateTemplate对象。

    到了这里,问题就开始了。Hibernate查询有限条数据时,由于考虑使用标准hql,兼容不同数据库查找,应该采用query.setMaxResults(int count);而不应使用类似于“ limit 15 ”这样的hql语句。HibernateTemplate提供了setMaxResults()方法。但是,如果你采用单件模式的HibernateTemplate,在第一次使用setMaxResults()后,其他DAO在执行查询的时候,都会自动加入类似“ limit x ”这样的语句。这先让不是我们想要看到的。看spring源码就知道HibernateTemplate持有private int maxResults的变量,默认值是0,每次查询前都会去读取该变量。查询完成时,也不会自动重置该变量。貌似没看到别人提起这个。我自己的解决办法只能是,在每次执行完查询之后,手动进行一次getHibernateTemplate().setMaxResults(0)。这样就不会对其他查询产生影响了,但总觉得这种做法有些不和谐,不知道其他人是否有什么解决办法。
分享到:
评论

相关推荐

    hibernateTemplate的常用方法

    通过`HibernateTemplate`,开发者可以非常方便地进行数据的增删改查等基本操作,而无需关心Hibernate Session的开启、关闭及事务管理等问题。本文将详细介绍`HibernateTemplate`的一些常用方法及其应用场景。 #### ...

    HibernateTemplate的用法总结

    - **统一的异常处理**:使用HibernateTemplate可以避免出现由Session关闭不当导致的问题。 - **集成Spring框架**:与Spring框架高度集成,可以方便地管理事务。 - **易于测试**:由于使用了Spring的依赖注入,使得...

    hibernateTemplate

    - `void setMaxResults(int maxResults)`:设置分页的最大结果数。 通过结合`find`方法使用,可以实现高效的分页查询功能。 ##### 3. 命名查询支持 `HibernateTemplate`还支持命名查询功能,这是一种预先定义好的...

    HibernateTemplate 的常规用法.doc

    9. `void setMaxResults(int maxResults)`: 用于设置查询结果的分页大小,实现数据检索的优化。 在实际应用中,DAO(Data Access Object)类通常会使用HibernateTemplate。例如,以下是一个简单的`PersonDAOImpl`类...

    HibernateTemplate汇总

    HibernateTemplate 汇总 HibernateTemplate 是 Spring 框架中的一個关键组件,用于简化 Hibernate 的使用,提供了許多实用的方法来进行数据库操作。在本文中,我们将对 HibernateTemplate 的主要方法进行总结和解释...

    HibernateTemplate详细描述以及使用范围

    2. **事务管理**:通过`HibernateTemplate`可以方便地处理事务边界问题,实现细粒度的事务控制。 3. **批处理操作**:支持批量执行SQL语句,优化数据库访问性能。 4. **自定义查询**:支持HQL(Hibernate Query ...

    关于使用HibernateTemplate

    而在使用`HibernateTemplate`时,这些操作都被自动管理,从而避免了因遗漏关闭`Session`而导致的资源泄露问题。 3. **异常处理**:当使用`HibernateTemplate`执行数据库操作时,它会自动捕获并处理Hibernate抛出的...

    HibernateTemplate的方法使用

    ### HibernateTemplate 的方法使用 #### 一、简介与配置方式 **HibernateTemplate** 是 Spring 框架中用于简化 Hibernate 使用的一个工具类。它通过 AOP(面向切面编程)的思想,封装了大量的 CRUD(创建、读取、...

    HibernateTemplate的简单示例

    HibernateTemplate的简单示例

    HibernateTemplate源代码

    ### HibernateTemplate源代码解析 #### 一、简介 `HibernateTemplate`是Spring框架中的一个类,位于`org.springframework.orm.hibernate3`包下。它提供了一系列简化Hibernate数据访问操作的方法,并且能够自动将...

    hibernateTemplate批量删除数据

    在实际开发中,批量删除操作可能会遇到各种异常情况,例如数据库连接问题、SQL语法错误等。因此,在调用`execute()`方法时,通常会捕获`HibernateException`和`SQLException`,并进行相应的错误处理。此外,为了...

    hibernateTemplate常用方法.htm

    hibernateTemplate常用方法.htm

    HibernateTemplate及generator用法.doc

    而`HibernateTemplate`则可以更好地控制和管理Session,避免这个问题。 以下是`getSession`的一些常用操作: - 查询:`getSession().find()`, `getSession().createQuery()` - 保存:`getSession().save()`, `...

    HibernateTemplate分组统计

    ### HibernateTemplate 分组统计知识点详解 #### 一、概述 在Java Web开发中,尤其是在使用...这不仅有助于更好地理解和掌握Spring与Hibernate的集成方式,同时也为解决实际项目中的复杂数据处理问题提供了有效途径。

    简单封装 HibernateTemplate 各项功能

    GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。

    一个模拟Spring将SessionFactory注入到HibernateTemplate的小例子

    本示例将深入探讨如何使用Spring将SessionFactory注入到HibernateTemplate中,从而实现数据库操作的便捷管理。 首先,让我们了解几个关键组件: 1. SessionFactory:这是Hibernate的核心工厂类,用于创建Session...

    HibernateTemplate类的使用

    ### HibernateTemplate类的使用详解 #### 一、引言 在Java开发中,持久层框架Hibernate因其优秀的ORM(Object-Relational Mapping)特性被广泛应用。为了更便捷地使用Hibernate,Spring框架提供了一系列工具类来简化...

    基于HIbernateTemplate的代码自动生成

    `HibernateTemplate`是Spring框架对Hibernate ORM(对象关系映射)的一种封装,它简化了与数据库交互的复杂性,而"基于HibernateTemplate的代码自动生成"正是为了进一步提升开发效率而设计的一种技术手段。...

    hibernateDaoSurpport和hibernateTemplate

    当这两个框架结合使用时,通常会遇到如何更好地整合两者的问题,其中`HibernateDaoSupport`和`HibernateTemplate`就是两个关键的概念。 #### 二、HibernateTemplate `HibernateTemplate`是Spring提供的用于简化...

Global site tag (gtag.js) - Google Analytics