- 浏览: 3430302 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://blog.163.com/xiaokangzhijia@126/blog/static/1659548562011041749567/
HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。这种灵活方式主要是通过如下两个方法完成的:
(1)
(2)
HibernateCallback实例可在任何有效的Hibernate数据访问中使用。程序开发者通过HibernateCallBack,可以完全使用Hibernate灵活的方式来访问数据库,解决Spring封装Hibernate后灵活性不足的缺陷。
HibernateCallback是个接口,该接口包含一个方法doInHibernate(org.hibernate.Session session),该方法只有一个参数Session。
注意:
在doInHibernate方法内可访问Session,该Session对象是绑定到该线程的Session实例。在该方法内的持久层操作,与不使用Spring时的持久化操作完全相同。这保证了对于复杂的持久化层访问,依然可以使用Hibernate的访问方式。
下面是有一个HibernateDaoSupport扩展类(增加了三个分页查询的方法):
注意:Spring提供的XxxTemplate和XxxCallBack互为补充,XxxTemplate对通用操作进行封装,而XxxCallBack解决了封装后灵活性不足的缺陷。
HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。这种灵活方式主要是通过如下两个方法完成的:
(1)
Object execute(HibernateCallback action)
(2)
List executeFind(HibernateCallback action)
HibernateCallback实例可在任何有效的Hibernate数据访问中使用。程序开发者通过HibernateCallBack,可以完全使用Hibernate灵活的方式来访问数据库,解决Spring封装Hibernate后灵活性不足的缺陷。
HibernateCallback是个接口,该接口包含一个方法doInHibernate(org.hibernate.Session session),该方法只有一个参数Session。
注意:
在doInHibernate方法内可访问Session,该Session对象是绑定到该线程的Session实例。在该方法内的持久层操作,与不使用Spring时的持久化操作完全相同。这保证了对于复杂的持久化层访问,依然可以使用Hibernate的访问方式。
下面是有一个HibernateDaoSupport扩展类(增加了三个分页查询的方法):
//============================================== public class ExtendHibernateDaoSupport extends HibernateDaoSupport{ /** 使用hql进行分页查询 @param hql 需要查询的hql语句 @param offset 第一条记录索引 @param pageSize 当前需要显示的记录数 @return 当前页的所有记录 */ public List findByPage(final String hql, final int offset, final int pageSize){ //通过一个HibernateCallback对象来执行查询 List list = getHibernateTemplate().executeFind( new HibernateCallback(){//实现HibernateCallback接口必须实现的方法 public Object doInHibernate(Session session)throws HibernateException, SQLException{//执行Hibernate分页查询 List result = session.createQuery(hql) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; } /** 使用hql进行分页查询 @param hql 需要查询的hql语句 @param value 如果hql有一个参数需要传入,value就是传入hql语句的参数 @param offset 第一条记录索引 @param pageSize 当前需要显示的记录数 @return 当前页的所有记录 */ public List findByPage(final String hql, final Object value,final int offset, final int pageSize){ //通过一个HibernateCallback对象来执行查询 List list = getHibernateTemplate().executeFind(new HibernateCallback(){//实现HibernateCallback接口必须实现的方法 public Object doInHibernate(Session session)throws HibernateException, SQLException{//执行Hibernate分页查询 List result = session.createQuery(hql)//为hql语句传入参数 .setParameter(0,value) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; } /** 使用hql进行分页查询 @param hql 需要查询的hql语句 @param values 如果hql有多个参数需要传入,values就是传入hql语句的参数数组 @param offset 第一条记录索引 @param pageSize 当前需要显示的记录数 @return 当前页的所有记录 */ public List findByPage(final String hql, final Object[] values,final int offset, final int pageSize){ //通过一个HibernateCallback对象来执行查询 List list = getHibernateTemplate().executeFind(new HibernateCallback(){ //实现HibernateCallback接口必须实现的方法 public Object doInHibernate(Session session)throws HibernateException, SQLException{ //执行Hibernate分页查询 Query query = session.createQuery(hql); //为hql语句传入参数 for(int i=0; i<values.length; i++){ query.setParamter(i,values[i]); } List result = query.setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; }
注意:Spring提供的XxxTemplate和XxxCallBack互为补充,XxxTemplate对通用操作进行封装,而XxxCallBack解决了封装后灵活性不足的缺陷。
发表评论
-
Spring Boot 属性配置
2016-06-24 11:04 1187Spring Boot 属性配置和使用 http://blog ... -
Spring Boot 集成MyBatis
2016-06-24 10:55 2035Spring Boot 集成MyBatis http://bl ... -
Spring MVC防重复提交
2016-06-17 15:47 1652http://my.oschina.net/zyqjustin ... -
Spring容器加载完之后执行特定任务
2016-06-17 15:36 2292http://my.oschina.net/simpleton ... -
使用spring-session和shiro来代理session的配置
2016-06-16 11:21 12067使用spring-session和redis来代理sessio ... -
JSTL 的 if else : 有 c:if 没有 else 的处理
2016-06-14 09:52 1341http://blog.csdn.net/xiyuan1999 ... -
spring mvc 请求转发和重定向
2016-06-14 09:48 1406http://blog.csdn.net/jackpk/art ... -
mvc:view-controller
2016-05-18 10:26 1088http://blog.csdn.net/lzwglory/a ... -
spring配置事物的方式:注解和aop配置
2016-05-14 00:26 4107参考: Spring AOP中pointcut express ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2292http://www.oschina.net/p/uncode ... -
Mybatis分库分表扩展插件
2016-05-12 15:47 1630http://fangjialong.iteye.com/bl ... -
spring+mybatis+atomikos 实现JTA事务
2016-05-11 22:00 5528sping配置多个数据源 不同用户操作不同数据库 http:/ ... -
Spring中使用注解 @Scheduled执行定时任务
2016-05-10 09:39 1573原文:http://dwf07223.blog.51cto.c ... -
Spring中配置Websocket
2016-05-05 16:55 1283spring+websocket整合(springMVC+sp ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1323集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4805使用Spring-data进行Redis操作 http://z ... -
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
2016-05-03 13:35 1066Spring4新特性——集成Bean Validation 1 ... -
SpringMVC介绍之Validation
2016-05-03 13:10 990SpringMVC介绍之Validation http://h ... -
spring 注解方式下使用commons-validator 验证表单
2016-05-03 11:08 3083原文: http://www.programgo.com/ar ... -
Spring MVC学习详解
2016-04-28 09:13 1009原文 http://blog.csdn.net/alsocod ...
相关推荐
HibernateCallback 使用方法 HibernateCallback 是 Hibernate 框架中的一种 callback 机制,允许开发者在持久层访问时执行自定义操作。HibernateCallback 是 Spring 框架中与 Hibernate 整合的重要组件,通过它可以...
2. **ORM集成**:Spring通过`HibernateTemplate`和`HibernateCallback`支持Hibernate,简化了事务管理和对象关系映射。同样,对于MyBatis,Spring提供`SqlSessionFactoryBean`和`SqlSessionTemplate`来整合MyBatis,...
例如,在配置 Hibernate 模板时,我们使用了 HibernateCallback 对象来执行 Hibernate 操作。这使得我们的应用程序更加灵活和可维护。 Spring 配置文件是 Spring 框架中最重要的配置文件之一,负责定义和配置应用...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...
使用Spring的JDBC模板,可以避免在DAO实现类中直接编写SQL语句,而是将它们作为字符串常量,这样可以提高代码的可读性和可维护性。 ### 3. Spring对Hibernate的DAO支持 Spring通过HibernateTemplate和...
Spring通过提供一系列的DAO抽象类,如HibernateDaoSupport,HibernateTemplate以及HibernateCallBack,使得开发者可以更方便地实现DAO组件。这些抽象类作为DAO实现类的基类,降低了开发难度,确保了代码的一致性和可...
### 泛型Hibernate的...本文详细介绍了如何实现泛型Hibernate,并将其与Spring框架集成,以及如何使用Maven构建工程。通过这些技术的应用,开发者可以更加高效地进行数据库操作,同时保证代码的可维护性和可扩展性。
开发者通过HibernateCallback,可以完全使用Hibernate灵活的方式来访问数据库,解决了Spring封装Hibernate后灵活性不足的缺陷。 24.3 Spring对Hibernate的简化 24.3.4 HibernateTemplate的复杂用法 ...
随着Hibernate的更新,特别是SessionFactory.getCurrentSession()的出现,可以直接在Spring的事务范围内获取和管理Session,使得直接使用HibernateAPI成为可能。 2. **使用SessionFactory.getCurrentSession()** ...
- **一致性的使用**:在 Spring 中,现在可以一致性地使用泛型集合和映射、泛型 FactoryBeans 以及解决 Spring AOP API 中的桥接方法问题。 - **事件监听器的改进**:GenericApplicationListeners 现在只接收特定...
本文详细介绍了Spring与Hibernate集成的过程,包括如何配置`SessionFactory`、使用`HibernateTemplate`简化数据操作、通过`HibernateDaoSupport`提高代码可维护性以及利用`HibernateCallback`实现更复杂的业务逻辑。...
这里的`x-x-x`应该替换为实际使用的Spring版本号,例如`struts2-spring-plugin-2.5.18.jar`。 ##### 2. 配置SessionFactory 在Spring框架中,`SessionFactory`是创建`Session`的基础,通常在配置文件(如`...
此外,Spring还提供了HibernateTemplate和HibernateCallback接口,使得事务管理变得更加简单。在`applicationContext.xml`中,我们需要配置Hibernate的相关bean,如SessionFactory、DataSource等。 对于Struts和...
- **Hibernate**:Spring通过HibernateTemplate和HibernateCallback接口,提供了对Hibernate的集成,使得我们可以利用Spring的DI和AOP来管理SessionFactory和Session。 - **MyBatis**:Spring支持MyBatis的...
Spring学习笔记详细知识点如下: 1. 面向接口编程(面向抽象编程): 面向接口编程是面向对象编程的一种重要实践,它鼓励开发者通过接口而不是具体实现来编写程序...掌握这些知识点对于学习和使用Spring框架至关重要。
在这个配置说明中,开发者使用的是Struts2.3、Spring3.1.2和Hibernate4.1.6的版本。 首先,我们需要了解这三大框架的基本作用: - **Struts2**:是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,...
Spring还支持使用回调机制(如HibernateCallback)处理特殊查询和分页。 Hibernate的核心在于对象关系映射,它允许我们将Java对象直接映射到数据库表。开发者需要正确配置实体类(Entity)和数据访问对象(DAO),...
- 利用Spring的 `HibernateCallback` 来执行特定的数据库操作。 #### 四、具体实现 1. **PageBean类**: ```java public class PageBean { private int count = 0; private int pageSize = 20; private int ...
HibernateCallback HibernateDaoSupport HibernateDaoSupport HibernateInterceptor HibernateInterceptor HibernateJdbcException HibernateJdbcException HibernateJpaDialect HibernateJpaVendorAdapter ...