HibernateTemplate提供了非常多的常用方法来完成数据库的基本操作,使得持久层访问摸板化,只要创建HibernateTemplate实例后,注入一个SessionFactory的引用就可以了.无须手动创建sessionFactory,更加智能的管理Hibernate 的Session,没有大量的try/catch操作,
void delete(Object entity)删除指定持久化实例
deleteAll(Collection entities)删除集合内全部持久化实例
find(String queryString)根据HQL查询字符串返回实例集合
findByNamedQuery(Striing QueryName)根据命名查询返回实例集合
Get(Class entityClass,Serializable id)割据主键加载特定持久化类的实例
save(Object entity)保存实例
saveOrUpdate(Object entity)根据实例状态,选择保存或者更新
update(Object entity)更新实例的状态
setMaxResults(int maxResults)设置分页大小
Hibernate的复杂用法HibernateCallback
HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。
HibernateTemplate的灵活访问方式是通过如下两个方法完成:
(1)Object execute(HibernateCallback action)
(2)List execute(HibernateCallback action)
这两个方法都需要一个HibernateCallback的实例,HibernateCallback实例可在任何有效的Hibernate数据访问中使用。
程序开发者通过HibernateCallback,可以完全使用Hibernate灵活的方式来访问数据库,解决Spring封装Hibernate后灵活性不足的缺陷。
HibernateCallback是一个接口,该接口只有一个方法doInHibernate(org.hibernate.Session session),
该方法只有一个参数Session。通常,程序中采用实现HibernateCallback的匿名内部类来获取HibernateCallback的实例,
方法doInHibernate的方法体就是Spring执行的持久化操作。
还有的就是采用:
HibernateTemplate.execute(HibernateCallback action)这种回调的方式,封装了对异常的处理和对事务的一些处理。
如:
public Object execute(HibernateCallback action, boolean exposeNativeSession) throws DataAccessException {
// ......(省略)
// ......
try {
previousFlushMode = applyFlushMode(session, existingTransaction);
enableFilters(session);
Session sessionToExpose = (exposeNativeSession ? session : createSessionProxy(session));
Object result = action.doInHibernate(sessionToExpose);
flushIfNecessary(session, existingTransaction);
return result;
}catch (HibernateException ex){
//省略
}
}catch (SQLException ex){
// ......(省略)
}catch (RuntimeException ex) {
// ......(省略)
}finally{
// ......(省略)
}
}
分享到:
相关推荐
通常,程序中采用实现HibernateCallback的匿名内部类来获取HibernateCallback的实例,方法doInHibernate()就是Spring执行的持久化操作。 24.3 Spring对Hibernate的简化 24.3.5 HibernateDaoSupport Spring为与...
然而,在采用MVC架构进行分层开发的现代Web应用中,这种做法不再适用。分层设计要求业务逻辑、数据访问和用户界面分离,因此,分页功能也需在不同的层次上进行适当的封装和实现。 ### 二、DAO层设计 在SSH框架中,...
【Spring对DAO的支持】 在Java开发中,Spring框架提供了对数据访问对象(DAO)的强大支持,旨在降低...这种支持鼓励开发者采用面向接口的编程风格,有利于实现松散耦合的架构,从而提高整体系统的灵活性和可扩展性。
在Spring中,DAO(Data Access Object)模式被广泛采用,用于封装数据库操作。Spring提供了对DAO的支持,包括针对不同数据访问技术如JDBC、Hibernate或JDO的抽象。开发者可以通过继承Spring提供的DAO支持类来创建DAO...
### SSH2分页算法的实现 #### 一、概述 在`struts2+hibernate+spring`(简称SSH2)项目开发中,分页功能是常见的需求之一。...此外,还可以进一步优化查询性能,比如采用更高效的查询策略或缓存机制等。
this.getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { return session.createQuery(hql).executeUpdate();...
在现代Web应用开发中,为了更好地实现业务逻辑的分离与组件化管理,通常会采用多种框架结合的方式进行开发。Struts2作为一款优秀的MVC框架,主要用于处理前端请求与控制流程;而Spring框架则提供了一种轻量级的依赖...
随着企业级应用需求的不断增加,为了更好地实现项目的模块化管理和提高代码的可维护性,越来越多的开发者选择采用MVC架构(Model-View-Controller)进行开发。在Java Web开发领域,Struts2作为经典的MVC框架之一,...
尤其在采用MVC架构,如Spring、Hibernate、Struts2(通常称为SSH框架)的项目中,实现高效的分页功能显得尤为重要。本文将深入探讨如何在三大框架整合的环境下实现分页,基于提供的文件信息进行详细解析。 ### 分页...
综上所述,CRUD操作在JSP Web开发中扮演着至关重要的角色,通过合理的代码设计和框架利用,可以高效地管理数据,为用户提供丰富的功能体验。无论是增删查改,都需要程序员对底层数据库操作有深刻的理解,以及对所...
在基于Java的企业级Web开发中,常常采用SSH(Spring、Struts2、Hibernate)框架进行整合开发。在大型系统中,为了提高用户体验和系统性能,分页显示是必不可少的功能。本篇文章将详细介绍如何在SSH整合开发中实现一...
除了使用Hibernate等ORM框架进行分页外,还可以采用传统的JSP和Servlet技术实现分页。 #### JSP页面分页示例 1. **页面初始化及数据库连接配置**: - 示例代码首先通过`@page`指令引入必要的包,并使用`jsp:...
为了提高用户体验并优化性能,采用分页查询是一种非常有效的方法。本篇文章将详细介绍如何利用SSH框架(Spring、Struts、Hibernate)来实现分页查询功能。 #### 二、基础知识介绍 1. **SSH框架简介**: - **...
在具体实现批量删除时,通常采用HQL或SQL语句。HQL是一种面向对象的查询语言,它允许开发者以面向对象的方式编写查询语句,而无需关心底层数据库的具体实现。下面通过一个示例来展示如何使用`HibernateTemplate`的`...
因此,通常采用分页技术来解决这一问题。分页技术可以有效地控制每次展示的数据量,提高用户体验,减轻服务器负担。 #### 二、分页显示的基本原理 分页显示的核心思想是将大量数据按照一定的数量分割成多个部分...
使用BlobByteArrayType字段类型后,为什么我们就可以象一般的字段类型一样操作Blob字段呢?可以确定的一点是:BlobByteArrayType不可能逾越Blob天生的操作方式,原来是BlobByteArrayType数据类型本身具体数据访问...
例如,在采用MVC架构(如Spring MVC)的项目中,业务逻辑、数据访问逻辑以及视图展示应该被明确地分离,以提高系统的可维护性和扩展性。 本篇文章将详细介绍如何在基于SSH2(Spring + Hibernate + Struts2)框架的...
这种方式更为高效,因为它减少了不必要的数据传输和内存开销。 在给定的内容中提到,采用的是第二种策略——物理分页。这种方法能够确保系统性能的同时提供良好的用户体验。 ##### 2.2 物理分页具体步骤 物理分页...