package tdh.court09.dao; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.transform.Transformers; import org.hibernate.type.Type; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class CommonDAO extends HibernateDaoSupport { private static final Log MYLOG = LogFactory.getLog(CommonDAO.class); /** * save * * @param transientInstance */ public void save(Object transientInstance) { MYLOG.debug("deleting " + Object.class.getName()); try { getHibernateTemplate().save(transientInstance); MYLOG.debug("save successful"); } catch (RuntimeException re) { MYLOG.error("save failed", re); throw re; } } /** * update * * @param transientInstance */ public void update(Object transientInstance) { MYLOG.debug("deleting " + Object.class.getName()); try { getHibernateTemplate().update(transientInstance); MYLOG.debug("save successful"); } catch (RuntimeException re) { MYLOG.error("save failed", re); throw re; } } /** * delete * * @param persistentInstance */ public void delete(Object persistentInstance) { MYLOG.debug("deleting " + Object.class.getName()); try { getHibernateTemplate().delete(persistentInstance); MYLOG.debug("delete successful"); } catch (RuntimeException re) { MYLOG.error("delete failed", re); throw re; } } /** * get Object(such as Integer, Long) * * @param hql * @param objArr * @param typeArr * @return */ public Object getObjectByHql(final String hql, final Object[] objArr, final Type[] typeArr) { MYLOG.debug("getObjectByHql: " + hql); try { Object obj = getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); if (objArr != null) { query.setParameters(objArr, typeArr); } return query.uniqueResult(); } }); return obj; } catch (RuntimeException re) { MYLOG.error("get failed", re); throw re; } } /** * get Object(such as Integer, Long) * * @param hql * @param objArr * @param typeArr * @return */ public Object getObjectByHql(final String hql) { return getObjectByHql(hql, null, null); } /** * getList * * @param hql * @param objArr * @param typeArr * @return List<Object[]> */ public List<?> getListByHql(final String hql, final Object[] objArr, final Type[] typeArr) { MYLOG.debug("getListByHql: " + hql); try { List<?> list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); if (objArr != null) { query.setParameters(objArr, typeArr); } List<?> list = query.list(); return list; } }); return list; } catch (RuntimeException re) { MYLOG.error("get failed", re); throw re; } } /** * getList * * @param hql * @return List<Object[]> */ public List<?> getListByHql(final String hql) { return getListByHql(hql, null, null); } /** * 此方法对含有text的字段不支持 * * @param sql eg: select AHDM,AH from AJ where AHDM='227300000005631' * @return List<Map> */ @SuppressWarnings("unchecked") public Map<String, Object> getMapBySql(final String sql) { MYLOG.debug("getListBySql: " + sql); try { Object obj = getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createSQLQuery(sql); query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); return query.uniqueResult(); } }); return (Map<String, Object>) obj; } catch (RuntimeException re) { MYLOG.error("get failed", re); throw re; } } /** * 此方法对含有text的字段不支持 * * @param sql eg: select AHDM,AH from AJ where AHDM='227300000005631' * @return List<Map> */ public List<?> getListBySql(final String sql, final Object[] objArr, final Type[] typeArr) { MYLOG.debug("getListBySql: " + sql); try { List<?> list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createSQLQuery(sql); if (objArr != null) { query.setParameters(objArr, typeArr); } query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); List<?> list = query.list(); return list; } }); return list; } catch (RuntimeException re) { MYLOG.error("get failed", re); throw re; } } /** * 此方法对含有text的字段不支持 * * @param sql eg: select AHDM,AH from AJ where AHDM='227300000005631' * @return List<Map> */ public List<?> getListBySql(final String sql) { return getListBySql(sql, null, null); } /** * 更新 * * @param sql * @return */ public int updateSql(final String sql, final Object[] objArr, final Type[] typeArr) { try { int i = (Integer) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createSQLQuery(sql); if (objArr != null) { query.setParameters(objArr, typeArr); } return query.executeUpdate(); } }); return i; } catch (RuntimeException re) { MYLOG.error("get failed", re); throw re; } } /** * 更新 * * @param sql * @return */ public int updateSql(final String sql) { return updateSql(sql, null, null); } }
相关推荐
`getHibernateTemplate().iterate(queryString).next()`这部分代码似乎是为了获取HQL查询("select count() from Info")的结果,即计算`Info`表中的记录总数。然而,这段代码可能不完整,因为它缺少关闭迭代器和...
使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。通过 Criteria,可以根据实际情况灵活地组装查询条件,以满足复杂的查询需求。 Hibernate 的 Criteria 是...
在Spring框架中,HibernateTemplate提供了一种方便的方式来执行DetachedCriteria查询,通过getHibernateTemplate().findByCriteria(detachedCriteria)方法,可以轻松地根据DetachedCriteria实例执行查询并获取结果。...
使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。例如,创建一个 Criteria 实例 org.hibernate.Criteria 接口表示,可以使用 Criteria 的 add(Criterion ...
Spring整合Hibernate后,我们可以通过`HibernateTemplate`的`find()`、`execute()`等方法执行HQL查询,也可以使用`Query`接口进行更复杂的查询。此外,Spring Data JPA的`JpaRepository`接口提供了一种更高级的查询...
在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...
使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。如使用 `session.createCriteria(Class)` 方法来创建 Criteria 实例,然后使用 `add(Criterion criterion)...
在本文中,我们将深入探讨如何将Spring Boot与Hibernate集成,并使用Druid作为数据库连接池。首先,我们需要理解这三个核心组件: 1. **Spring Boot**: 是一个由Pivotal团队提供的开源框架,它简化了创建独立的、...
在实体类(如`User.java`)中,我们需要使用Hibernate的注解来标记字段,如`@Id`,`@Column`等。 至于实际的数据访问操作,Spring通过`HibernateTemplate`或`HibernateDaoSupport`提供支持。在XML配置中,我们可以...
3. **索引优化**:为经常作为查询条件的字段添加索引,可以显著加快查询速度。 4. **对象缓存**:利用Hibernate的一级缓存和二级缓存机制,减少数据库的访问频率。 #### 六、总结 持久层的设计和优化对于提高系统的...
BlobByteArrayType使用从sessionFactory获取的Lob操作句柄lobHandler将byte[]的数据保存到Blob数据库字段中。这样,我们就再没有必要通过硬编码的方式,先insert然后再update来完成Blob类型数据的持久化,这个原来难...
在Java应用中,尤其是企业级应用,Hibernate 提供了一种对象关系映射(ORM)机制,使得开发人员可以使用面向对象的方式来操作数据库,而无需过多关注底层SQL语句的编写。 在给定的描述中,我们看到了两种使用...
- **特点**: Hibernate始终使用对象类型作为字段类型,即使在数据库中对应的字段是基本类型。 #### 五、XDoclet工具 - **介绍**: XDoclet是一种为Java项目生成各种辅助文件(如Hibernate映射文件)的工具。 - **...
Spring框架与Hibernate的整合是Java开发中常见的技术组合,它能有效地提高开发效率,简化数据访问层的实现。本文将详细讲解如何通过Spring的注解方式整合Hibernate,以实现一个完整的数据访问解决方案。 首先,我们...
HibernateTemplate是Spring提供的一个便捷的Hibernate操作模板,它封装了基本的Hibernate操作,如保存、更新、删除和查询,使得开发者可以避免直接操作Session,降低了代码的复杂性。而HibernateDaoSupport则是为...
在现代企业级Java开发中,Spring框架和Hibernate是两个非常重要的技术栈。Spring作为一款轻量级的应用框架,主要负责控制反转(IoC)和面向切面编程(AOP),能够有效地管理对象的生命周期以及依赖关系。而Hibernate...
- **HQL**:Hibernate 查询语言,一种类似于 SQL 的查询语言,但更加面向对象。 #### 五、具体知识点详解 ##### 1. Hibernate 映射文件 ```xml <hibernate-mapping> <generator class="uuid.hex"></...