1. /**
2.* 向数据库添加一条对应于一个业务对象实例的记录
3.*
4.* @param entity
5.* 业务对象实例
6. */
7.public Entity create(Entity entity) throws DaoException {
8.try {
9.getHibernateTemplate().save(entity);
10.return entity;
11.} catch (DataAccessException e) {
12. throw new DaoException("保存 " + entity.getClass().getName()
13.+ " 实例到数据库失败", e);
14.}
15.}
16.
17./**
18.* 向数据库更新一条对应于一个业务对象实例的记录
19.*
20.* @param entity
21. * 业务对象实例
22. */
23.public void update(Entity entity) throws DaoException {
24.try {
25.getHibernateTemplate().update(entity);
26.} catch (DataAccessException e) {
27. throw new DaoException("更新 " + entity.getClass().getName()
28.+ " 实例到数据库失败", e);
29.}
30.}
31.
32./**
33.* 从数据库删除一条对应于一个业务对象的记录
34.*
35.* @param entity
36.* 业务对象实例
37. */
38.public void delete(Entity entity) throws DaoException {
39.try {
40.getHibernateTemplate().delete(entity);
41.} catch (DataAccessException e) {
42. throw new DaoException("从数据库删除 " + entity.getClass().getName()
43.+ " 实例失败", e);
44.}
45.}
46.
47./**
48.* 从数据库删除所有对应于一个业务对象的记录
49.*
50.* @param clazz
51.* 指定类型的业务对象
52. */
53.public void deleteAll(Class clazz) throws DaoException {
54.try {
55.List result = getHibernateTemplate().loadAll(clazz);
56.getHibernateTemplate().deleteAll(result);
57.} catch (DataAccessException e) {
58.log.error("从数据库删除 " + clazz.getName() + " 的所有记录失败", e);
59.throw new DaoException("从数据库删除 " + clazz.getName() + " 的所有记录失败", e);
60.}
61.}
62.
63.public void deleteAll(Collection entities) throws DaoException {
64.try {
65.getHibernateTemplate().deleteAll(entities);
66.} catch(DataAccessException e) {
67.throw new DaoException(e);
68.}
69.}
70.
71./**
72.* 根据关键字从数据库加载指定类型的业务对象。
73.*
74.* @param clazz
75.* 业务对象的Class
76.* @param keyName
77.* 指定关键字对应的字段名称
78.* @param keyValue
79.* 指定关键字的值
80.* @return <ul>
81.* <li>当关键字唯一并存在该记录时,返回该记录对应的业务对象</li>
82.* <li>当关键字不唯一,返回查询结果的第一条记录所对应的业务对象</li>
83.* <li>当不存在该记录时,返回null</li>
84. */
85.public Object loadByKey(Class clazz, String keyName, Object keyValue)
86.throws DaoException {
87.try {
88.List result = getHibernateTemplate().find(
89."from " + clazz.getName() + " where " + keyName + " = ?",
90.keyValue);
91.if (result != null && result.size() > 0) {
92.return result.get(0);
93.} else {
94.return null;
95.}
96.} catch (DataAccessException e) {
97. throw new DaoException("加载 " + keyName + " 为 " + keyValue + " 的 "
98.+ clazz.getName() + " 实例失败", e);
99.}
100.}
101.
102./**
103.* 从数据库加载指定类型的业务对象的所有记录。
104.*
105.* @param clazz
106.* 业务对象的Class
107.* @return 返回数据库中对应该业务对象的所有记录的集合
108. */
109.public List loadAll(Class clazz) throws DaoException {
110.try {
111.return getHibernateTemplate().loadAll(clazz);
112.} catch (DataAccessException e) {
113. throw new DaoException("加载所有 " + clazz.getName() + " 实例时失败", e);
114.}
115.}
116.
117./**
118.* 根据查询语句查询数据库并返回查询结果所包含的业务对象集合。
119.*
120.* @param queryString
121.* 指定查询语句
122.* @return 返回查询结果包含的业务对象集合
123. */
124.public List find(String queryString) throws DaoException {
125.try {
126.return getHibernateTemplate().find(queryString);
127.} catch (DataAccessException e) {
128. throw new DaoException("执行查询 " + queryString + " 失败", e);
129.}
130.}
131.
132./**
133.* 根据带一个参数的查询语句查询数据库并返回查询结果所包含的业务对象集合。
134.*
135.* @param queryString
136.* 指定查询语句
137.* @param param
138.* 指定所带参数
139.* @return 返回查询结果包含的业务对象集合
140. */
141.public List find(String queryString, Object param) throws DaoException {
142.try {
143.return getHibernateTemplate().find(queryString, param);
144.} catch (DataAccessException e) {
145. throw new DaoException("执行参数为 " + param + " 的查询 " + queryString
146.+ " 失败", e);
147.}
148.}
149.
150./**
151.* 根据带多个参数的查询语句查询数据库并返回查询结果所包含的业务对象集合。
152.*
153.* @param queryString
154.* 指定查询语句
155.* @param params
156.* 指定参数数组
157.* @return 返回查询结果包含的业务对象集合
158. */
159.public List find(String queryString, Object[] params) throws DaoException {
160.try {
161.return getHibernateTemplate().find(queryString, params);
162.} catch (DataAccessException e) {
163.StringBuffer paramString = new StringBuffer("");
164.for (int i = 0; i < params.length; i++) {
165.paramString.append(params[i]);
166.paramString.append(" ");
167.}
168. throw new DaoException("执行参数为 " + paramString + "的查询 "
169.+ queryString + " 失败", e);
170.}
171.}
172.
173./**
174.* 根据已定义的查询语句查询数据库并返回查询结果所包含的业务对象集合。
175.*
176.* @param queryName
177.* 已定义查询语句的名称
178.* @return 返回查询结果包含的业务对象集合
179. */
180.public List findByNamedQuery(String queryName) throws DaoException {
181.try {
182.return getHibernateTemplate().findByNamedQuery(queryName);
183.} catch (DataAccessException e) {
184. throw new DaoException("执行命名为 " + queryName + " 的查询失败");
185.}
186.}
187.
188./**
189.* 根据已定义的带一个参数的查询语句查询数据库并返回查询结果所包含的业务对象集合。
190.*
191.* @param queryName
192.* 已定义查询语句的名称
193.* @param param
194.* 指定的参数
195.* @return 返回查询结果包含的业务对象集合
196. */
197.public List findByNamedQuery(String queryName, Object param)
198.throws DaoException {
199.try {
200.return getHibernateTemplate().findByNamedQuery(queryName, param);
201.} catch (DataAccessException e) {
202. throw new DaoException("执行参数为 " + param + " 命名为 " + queryName
203.+ " 的查询失败");
204.}
205.}
206.
207./**
208.* 根据已定义的带多个参数的查询语句查询数据库并返回查询结果所包含的业务对象集合。
209.*
210.* @param queryName
211.* 已定义查询语句的名称
212.* @param params
213.* 指定的参数数组
214.* @return 返回查询结果包含的业务对象集合
215. */
216.public List findByNameQuery(String queryName, Object[] params)
217.throws DaoException {
218.try {
219.return getHibernateTemplate().findByNamedQuery(queryName, params);
220.} catch (DataAccessException e) {
221.StringBuffer paramString = new StringBuffer("");
222.for (int i = 0; i < params.length; i++) {
223.paramString.append(params[i]);
224.paramString.append(" ");
225.}
226. throw new DaoException("执行参数为 " + paramString + "命名为 " + queryName
227.+ " 的查询失败");
228.}
229.}
HibernateTemplate 提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作, Spring 2.0 更增加对命名 SQL 查询的支持,也增加对分页的支持。大部分情况下,使用 Hibernate 的常规用法,就可完成大多数 DAO 对象的 CRUD 操作。下面是 HibernateTemplate 的常用方法简介:
q void delete(Object entity) :删除指定持久化实例
q deleteAll(Collection entities) :删除集合内全部持久化类实例
q find(String queryString) :根据 HQL 查询字符串来返回实例集合
q findByNamedQuery(String queryName) :根据命名查询返回实例集合
q get(Class entityClass, Serializable id) :根据主键加载特定持久化类的实例
q save(Object entity) :保存新的实例
q saveOrUpdate(Object entity) :根据实例状态,选择保存或者更新
q update(Object entity) :更新实例的状态,要求 entity 是持久状态
q setMaxResults(int maxResults) :设置分页的大小
分享到:
相关推荐
### HibernateTemplate 的详细介绍与使用范围 #### 一、概述 在Spring框架中,`HibernateTemplate`作为ORM(Object Relational Mapping)技术中的一个重要组件,它提供了简化Hibernate操作的方法集,使得开发人员...
`HibernateTemplate`类本身并没有直接继承自任何特定类,但它是Spring框架中众多DAO支持类之一。这些类通常用于处理数据访问异常以及资源管理等任务。`HibernateTemplate`主要依赖于`SessionFactory`来创建和管理...
**HibernateTemplate** 是 Spring 框架中用于简化 Hibernate 使用的一个工具类。它通过 AOP(面向切面编程)的思想,封装了大量的 CRUD(创建、读取、更新、删除)操作,使得开发者能够更加专注于业务逻辑的实现,而...
在实际应用中,DAO(Data Access Object)类通常会使用HibernateTemplate。例如,以下是一个简单的`PersonDAOImpl`类的示例: ```java public class PersonDAOImpl implements PersonDAO { private static Log log...
下面是一个使用`HibernateTemplate`的DAO实现类的示例代码,该类实现了`PersonDAO`接口,包含了基本的增删改查操作。 ```java public class PersonDAOHibernate implements PersonDAO { // 使用log4j记录日志 ...
`HibernateTemplate`是Spring框架中用于操作Hibernate的一个便捷工具类,它极大地简化了Hibernate在实际应用中的集成与开发工作。通过`HibernateTemplate`,开发者可以非常方便地进行数据的增删改查等基本操作,而...
HibernateTemplate是Spring框架提供的一种操作Hibernate的方式,它简化了Hibernate的使用过程,使开发者无需关注Session的管理与事务控制,极大地提高了开发效率。本文将对HibernateTemplate的主要用法进行详细介绍...
1. **HibernateTemplate**:是Spring框架提供的用于简化Hibernate使用的模板类。它提供了大量操作数据库的方法,包括查询、更新等,并且内置了事务管理机制。 2. **分组统计**:指通过SQL语句对查询结果按照一个或多...
本文将深入探讨如何利用Hibernate中的`HibernateTemplate`类进行批量数据删除操作,这不仅能够提高数据处理效率,还能优化数据库性能。 ### HibernateTemplate与批量删除 在Hibernate框架中,`HibernateTemplate`...
在这个框架中,HibernateTemplate是Spring提供的一个工具类,它简化了Hibernate的使用,使得开发者可以更方便地进行数据库操作,如增删改查。接下来,我们将深入探讨如何在SSH2中使用HibernateTemplate进行这些基本...
3. **使用HibernateTemplate**:在我们的业务逻辑类中,我们可以通过@Autowired注解或者使用getBean方法从Spring容器中获取HibernateTemplate实例,然后调用它的方法进行数据库操作。例如: ```java @Service ...
HibernateTemplate是 Hibernate框架中的一种模板类,提供了许多实用的方法来操作数据库。下面将对HibernateTemplate中的一些常用方法进行详细介绍: applyNamedParameterToQuery方法 该方法用于将命名参数应用于...
2. DAO接口的实现类,使用`HibernateTemplate`进行实际的数据库操作。 Service层的生成则涉及: 1. Service接口,声明业务逻辑方法,可能包括复杂的业务组合操作。 2. Service接口的实现类,调用DAO层的方法完成...
HibernateTemplate是Spring为简化Hibernate操作而设计的一个类,它包装了Hibernate的Session对象,提供了事务管理、异常转换等功能。使用HibernateTemplate,开发者无需手动管理Session,避免了可能出现的资源泄露...
为了解决这些问题,Spring框架提供了一个称为HibernateTemplate的类,它是对Hibernate API的一个封装,旨在提高开发效率和代码的可维护性。 **一、HibernateTemplate介绍** HibernateTemplate是Spring框架的一个...
为了简化Hibernate与Spring的整合,Spring提供了`HibernateTemplate`类,它是一个封装了Hibernate Session的工具类,使得在处理数据库操作时更加方便。`HibernateTemplate`在事务管理、异常转换等方面提供了很多便利...
`HibernateTemplate`是Spring提供的用于简化Hibernate使用的类。它提供了许多便捷的方法,使得开发者无需关心Hibernate Session的管理,而可以直接进行数据访问操作。以下是几个常见的方法: - **void delete...
为了简化Hibernate与Spring的集成,Spring提供了HibernateTemplate类,它是Spring对Hibernate的一种封装,使得在DAO层操作数据库变得更加简便和安全。 首先,我们来看如何在DAO中使用HibernateTemplate。通常,DAO...
在使用HibernateTemplate的saveOrUpdate方法时,如果遇到类似`\xE7\x84`这样的十六进制字符串,通常这是由于字符编码不匹配导致的汉字乱码问题。这个问题主要涉及到数据库的字符集设置、应用程序的编码配置以及数据...