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执行的持久化操作。
做分页:
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.setParameter( i, values[i]);
}
List result = query.setFirstResult(offset)
.setMaxResults(pageSize)
.list();
return result;
}
});
return list;
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/J2EEWEIWEI/archive/2009/08/01/4399671.aspx
分享到:
相关推荐
Hibernate 2.1 是一个历史悠久的Java对象关系映射(ORM)框架,它允许开发者将数据库操作转换为对Java对象的操作,...虽然Hibernate 2.1相对较旧,但理解其基本原理对于理解现代版本的Hibernate(如5.x)仍然很有帮助。
9. Callback事件:Hibernate支持在对象生命周期中的特定时刻触发回调方法,如预加载、加载、保存、更新和删除。源码中可能包含这些事件的监听器实现。 通过深入研究《Hibernate Quickly 源代码》,开发者可以全面...
通过深入学习和分析 Hibernate 3.2 的源代码,开发者可以更全面地理解其内部工作原理,从而更好地利用这个强大的工具,提高开发效率,减少数据库操作的复杂度。源码包中的内容包括了核心库、示例项目、文档等,为...
这个“hibernate中文文档”压缩包包含的是Hibernate框架的中文版API文档,对于学习和理解Hibernate的各种功能和用法有着重要的参考价值。 在Hibernate中,主要涉及以下几个核心概念: 1. **实体(Entities)**:在...
7. Callback事件: Hibernate允许在特定操作前后触发回调方法,如预加载(PreLoad)、加载(Load)、预更新(PreUpdate)、更新(Update)、预删除(PreDelete)和删除(Delete)。开发者可以通过实现这些回调接口...
本教程将深入讲解Hibernate的核心概念和技术,帮助开发者更好地理解和运用这个强大的工具。 一、Hibernate 概述 Hibernate 是Java开发中的一个持久化框架,它允许开发者用面向对象的方式处理数据库操作,将Java对象...
在Java的持久化框架Hibernate中,`SessionFactory`是核心组件之一,它扮演着数据库会话的工厂角色。SessionFactory是通过`Configuration`接口配置并初始化的,这个...理解并熟练运用这些接口,是掌握Hibernate的关键。
10. **Callback事件处理**: Hibernate 提供了一些预定义的生命周期回调方法,如`@PrePersist`, `@PostLoad`等,可以在对象的生命周期中的特定时刻执行自定义逻辑。 在"Hibernate Example-1"中,你可以找到一个具体...
《深入探索Hibernate 3.4.0:一个经典持久化框架的解析》 Hibernate,作为Java领域中的一个著名...对于Java开发者来说,掌握Hibernate不仅能够提升开发效率,也有助于深入理解面向对象编程与关系型数据库的融合之道。
7. 深入理解Callback事件:Hibernate支持在特定生命周期阶段触发回调方法,如预加载、加载、持久化、更新、删除等,通过这些回调,开发者可以进行额外的业务逻辑处理。 8. 性能优化:学习如何通过批处理、缓存、...
《Hibernate Annotations 3.4.0.GA API详解》 Hibernate是Java开发中广泛使用的对象关系映射...深入理解Hibernate Annotations,不仅可以提高开发效率,还能帮助我们更好地管理和维护数据库与Java对象之间的映射关系。
6. **事务管理**:Hibernate支持编程式和声明式的事务管理,理解何时及如何使用事务对于数据一致性至关重要。 7. **关联映射**:包括一对一、一对多、多对一、多对多等各种关联关系的映射,以及懒加载和立即加载...
Hibernate 3.2 API 文档是开发者们学习和使用 Hibernate 框架的重要参考资料,它详细阐述了该...通过深入学习 Hibernate 3.2 API 文档,开发者能够更好地理解和掌握这个强大的 ORM 框架,从而提升开发效率和代码质量。
这个“hibernate API”压缩包文件包含的是Hibernate的英文帮助文档,对于Java开发者尤其是初学者来说,是深入理解和使用Hibernate的重要参考资料。 Hibernate的核心功能在于ORM(Object-Relational Mapping),即...
11. **Callback事件**:Hibernate支持在特定操作前后触发回调方法,如`@PrePersist`、`@PostPersist`等,开发者可以通过这些接口实现自定义逻辑。 通过《Hibernate学习代码(最经典)》中的示例,学习者可以动手实践...
《Hibernate 3.3.2 API 帮助HTML版本详解》 Hibernate,作为一个流行的Java对象关系映射(ORM)框架,为开发者提供了强大的数据...对于任何Java开发者而言,理解和掌握Hibernate都是提升开发技能不可或缺的一部分。
这个压缩包文件包含了Hibernate3的源代码,对于深入理解其内部工作原理、优化性能以及自定义扩展有着极大的帮助。以下是关于Hibernate3的一些关键知识点: 1. **对象关系映射(ORM)**:Hibernate3是ORM的一种实现...
《Hibernate3[1].2_en 英文API》是一个针对Hibernate3.1.2版本的英文官方文档,它是Java开发者的重要参考资料,特别是对于那些正在学习或已经在项目中使用Hibernate框架的人来说。Hibernate是一个开源的对象关系映射...
对于Java开发者来说,深入理解Hibernate API是构建高效、可维护的持久层代码的关键。 **1. Hibernate核心概念** - **对象关系映射(ORM)**: ORM是将数据库表映射为Java类,通过对象的方式来操作数据,避免了直接...
【Hibernate培训教程】 ...本教程旨在帮助开发者深入理解和掌握Hibernate,通过实践操作,可以提升数据库操作的效率,降低维护成本。学习Hibernate不仅能够提高开发速度,还能让代码更加简洁、易于维护。