`
digyso
  • 浏览: 139353 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

HibernateTemplate相关方法

阅读更多

/**
* 向数据库添加一条对应于一个业务对象实例的记录
*
* @param entity
* 业务对象实例
*/
public Entity create(Entity entity) throws DaoException {
try {
getHibernateTemplate().save(entity);
return entity;
} catch (DataAccessException e) {
throw new DaoException("保存 " + entity.getClass().getName()
+ " 实例到数据库失败", e);
}
}

/**
* 向数据库更新一条对应于一个业务对象实例的记录
*
* @param entity
* 业务对象实例
*/
public void update(Entity entity) throws DaoException {
try {
getHibernateTemplate().update(entity);
} catch (DataAccessException e) {
throw new DaoException("更新 " + entity.getClass().getName()
+ " 实例到数据库失败", e);
}
}

/**
* 从数据库删除一条对应于一个业务对象的记录
*
* @param entity
* 业务对象实例
*/
public void delete(Entity entity) throws DaoException {
try {
getHibernateTemplate().delete(entity);
} catch (DataAccessException e) {
throw new DaoException("从数据库删除 " + entity.getClass().getName()
+ " 实例失败", e);
}
}

/**
* 从数据库删除所有对应于一个业务对象的记录
*
* @param clazz
* 指定类型的业务对象
*/
public void deleteAll(Class clazz) throws DaoException {
try {
List result = getHibernateTemplate().loadAll(clazz);
getHibernateTemplate().deleteAll(result);
} catch (DataAccessException e) {
log.error("从数据库删除 " + clazz.getName() + " 的所有记录失败", e);
throw new DaoException("从数据库删除 " + clazz.getName() + " 的所有记录失败", e);
}
}

public void deleteAll(Collection entities) throws DaoException {
try {
getHibernateTemplate().deleteAll(entities);
} catch(DataAccessException e) {
throw new DaoException(e);
}
}

/**
* 根据关键字从数据库加载指定类型的业务对象。
*
* @param clazz
* 业务对象的Class
* @param keyName
* 指定关键字对应的字段名称
* @param keyValue
* 指定关键字的值
* @return <ul>
* <li>当关键字唯一并存在该记录时,返回该记录对应的业务对象</li>
* <li>当关键字不唯一,返回查询结果的第一条记录所对应的业务对象</li>
* <li>当不存在该记录时,返回null</li>
*/
public Object loadByKey(Class clazz, String keyName, Object keyValue)
throws DaoException {
try {
List result = getHibernateTemplate().find(
"from " + clazz.getName() + " where " + keyName + " = ?",
keyValue);
if (result != null && result.size() > 0) {
return result.get(0);
} else {
return null;
}
} catch (DataAccessException e) {
throw new DaoException("加载 " + keyName + " 为 " + keyValue + " 的 "
+ clazz.getName() + " 实例失败", e);
}
}

/**
* 从数据库加载指定类型的业务对象的所有记录。
*
* @param clazz
* 业务对象的Class
* @return 返回数据库中对应该业务对象的所有记录的集合
*/
public List loadAll(Class clazz) throws DaoException {
try {
return getHibernateTemplate().loadAll(clazz);
} catch (DataAccessException e) {
throw new DaoException("加载所有 " + clazz.getName() + " 实例时失败", e);
}
}

/**
* 根据查询语句查询数据库并返回查询结果所包含的业务对象集合。
*
* @param queryString
* 指定查询语句
* @return 返回查询结果包含的业务对象集合
*/
public List find(String queryString) throws DaoException {
try {
return getHibernateTemplate().find(queryString);
} catch (DataAccessException e) {
throw new DaoException("执行查询 " + queryString + " 失败", e);
}
}

/**
* 根据带一个参数的查询语句查询数据库并返回查询结果所包含的业务对象集合。
*
* @param queryString
* 指定查询语句
* @param param
* 指定所带参数
* @return 返回查询结果包含的业务对象集合
*/
public List find(String queryString, Object param) throws DaoException {
try {
return getHibernateTemplate().find(queryString, param);
} catch (DataAccessException e) {
throw new DaoException("执行参数为 " + param + " 的查询 " + queryString
+ " 失败", e);
}
}

/**
* 根据带多个参数的查询语句查询数据库并返回查询结果所包含的业务对象集合。
*
* @param queryString
* 指定查询语句
* @param params
* 指定参数数组
* @return 返回查询结果包含的业务对象集合
*/
public List find(String queryString, Object[] params) throws DaoException {
try {
return getHibernateTemplate().find(queryString, params);
} catch (DataAccessException e) {
StringBuffer paramString = new StringBuffer("");
for (int i = 0; i < params.length; i++) {
paramString.append(params[i]);
paramString.append(" ");
}
throw new DaoException("执行参数为 " + paramString + "的查询 "
+ queryString + " 失败", e);
}
}

/**
* 根据已定义的查询语句查询数据库并返回查询结果所包含的业务对象集合。
*
* @param queryName
* 已定义查询语句的名称
* @return 返回查询结果包含的业务对象集合
*/
public List findByNamedQuery(String queryName) throws DaoException {
try {
return getHibernateTemplate().findByNamedQuery(queryName);
} catch (DataAccessException e) {
throw new DaoException("执行命名为 " + queryName + " 的查询失败");
}
}

/**
* 根据已定义的带一个参数的查询语句查询数据库并返回查询结果所包含的业务对象集合。
*
* @param queryName
* 已定义查询语句的名称
* @param param
* 指定的参数
* @return 返回查询结果包含的业务对象集合
*/
public List findByNamedQuery(String queryName, Object param)
throws DaoException {
try {
return getHibernateTemplate().findByNamedQuery(queryName, param);
} catch (DataAccessException e) {
throw new DaoException("执行参数为 " + param + " 命名为 " + queryName
+ " 的查询失败");
}
}

/**
* 根据已定义的带多个参数的查询语句查询数据库并返回查询结果所包含的业务对象集合。
*
* @param queryName
* 已定义查询语句的名称
* @param params
* 指定的参数数组
* @return 返回查询结果包含的业务对象集合
*/
public List findByNameQuery(String queryName, Object[] params)
throws DaoException {
try {
return getHibernateTemplate().findByNamedQuery(queryName, params);
} catch (DataAccessException e) {
StringBuffer paramString = new StringBuffer("");
for (int i = 0; i < params.length; i++) {
paramString.append(params[i]);
paramString.append(" ");
}
throw new DaoException("执行参数为 " + paramString + "命名为 " + queryName
+ " 的查询失败");
}
}

分享到:
评论

相关推荐

    第24次课-1 Spring与Hibernate的整合

    HibernateTemplate的灵活访问方式是通过如下两个方法完成的: Object execute(HibernateCallback action) List execute(HibernateCallback action) 开发者通过HibernateCallback,可以完全使用Hibernate灵活的方式来...

    ssh(structs,spring,hibernate)框架中的上传下载

     TfileDAOHibernate通过扩展Spring提供的Hibernate支持类HibernateDaoSupport而建立,HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute...

    MyEclipse 6 Java 开发中文教程第十章

    第十章 开发Spring应用...... 242 &lt;br&gt;10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法2 - 用 CGLIB 来实现事务管理 245 &lt;br&gt;10.7.3 Spring相关的参考资料... 248 &lt;br&gt;

    Spring.3.x企业应用开发实战(完整版).part2

    12.2.2 使用HibernateTemplate 12.2.3 处理LOB类型数据 12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 使用注解配置 12.2.7 事务处理 12.2.8 延迟加载的问题 12.3 在Spring中使用myBatis ...

    Spring3.x企业应用开发实战(完整版) part1

    12.2.2 使用HibernateTemplate 12.2.3 处理LOB类型数据 12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 使用注解配置 12.2.7 事务处理 12.2.8 延迟加载的问题 12.3 在Spring中使用myBatis ...

    开源框架 Spring Gossip

    不使用XML定义档进行 Bean设置 Aware 相关介面 BeanPostProcessor BeanFactoryPostProcessor PropertyPlaceholderConfigurer PropertyOverrideConfigurer CustomEditorConfigurer ...

    《MyEclipse 6 Java 开发中文教程》前10章

    10.5.2.6 使用 HibernateTemplate 实现分页查询 254 10.6 小结 255 10.7 参考资料 255 10.7.1 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法 255 10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据...

    教务管理系统(概要设计及详细设计).doc

    持久(PO)层是由hibernate架构实现的,它包括关于整体数据 库的,通过Spring集成模板HibernateTemplate提供DAO 来使用PO。在Spring 的配置文件(applicationContext. xml)中配置sessionFactory的bean 来管理...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    博客用户通过前台登录后,可对自己的博客空间进行管理,包括发布自己的网络日志、收藏个人图片、和相关人员进行交流和沟通以及删除访问者发表的评论等。 因此,在具体设计实现该博客网站时,主要考虑了主流博客...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.2.3. HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs ...

    Spring中文帮助文档

    9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用TransactionTemplate 9.6.2. ...

    Spring API

    9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用TransactionTemplate 9.6.2. ...

    spring chm文档

    9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用 TransactionTemplate 9.6.2. 使用 ...

    Spring 2.0 开发参考手册

    9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用 TransactionTemplate 9.6.2. 使用 ...

Global site tag (gtag.js) - Google Analytics