前提条件:你的类必须继承HibernateDaoSupport
一:
回调函数:
public List getList(){
return (List ) getHibernateTemplate().execute(
new HibernateCallback() {
public List doInHibernate(final Session s)
throws HibernateException, SQLException {
StringBuffer sb = new StringBuffer();
Query query = s.createSQLQuery(sb.toString());//[b]执行普通sql[/b]
Query query = s.createQuery(sb.toString());// [b]执行hql [/b]
List list = query.list();
return list ;
}
});
}
采用这种做法的好处是:不用关心事务。session的创建和销毁,一切都在程序内部完成。看看名字doInHibernate就知道好处了。不好的是程序看起来比较乱!个人认为。
二:
getHibernateTemplate().find():
List list = getHibernateTemplate().find(String sql ):
这种的前提是sql必须是hql ,原始sql 不能执行。
三:
自己获取session处理。
获取session的两种方式:this.getSession();和this.getHibernateTemplate().getSessionFactory().openSession();
获取session以后再createQuery操作就一样了。但是这种做法,是需要自己去手动关闭session的。所以你需要配置openSessioninview,个人认为不推荐使用!
其他:
getHibernateTemplate.delete(Object);
getHibernateTemplate.save(Object);
getHibernateTemplate.update(Object);
总结:推荐使用回调函数。
分享到:
相关推荐
### getHibernateTemplate() 使用方法详解 #### 概述 在Java开发中,Hibernate是一个非常流行的持久层框架,它简化了数据库操作,使开发者能够更加高效地进行数据存取。Spring框架进一步封装了Hibernate,提供了`...
`getHibernateTemplate()`是Spring框架与Hibernate集成时提供的一个便捷方法,它封装了对Hibernate Session的操作,使得在Service或DAO层进行数据库交互变得更加简单。 在给定的标题和描述中,提到的是`...
以上介绍了通过`getHibernateTemplate()`方法执行查询的不同方式,包括简单的HQL查询、带有参数的查询、模糊查询以及基于实例对象的查询等。这些方法在实际开发中非常实用,可以帮助开发者更灵活地处理各种查询需求...
这条代码会执行一个简单的HQL查询,即“从User表中选择所有记录”,并返回一个包含所有用户对象的列表。 #### 二、find(String queryString, Object value) 此方法同样是执行HQL查询语句,但允许传递一个参数值。...
简单的按主键查询可以这样实现: ```java public User getUserById(Long userId) { return hibernateTemplate.get(User.class, userId); } ``` 对于更复杂的查询,可以使用HQL或Criteria API: ```java List...
`HibernateTemplate`是Spring框架对Hibernate的一种封装,提供了一种更简单的API来执行常见的Hibernate操作,比如获取对象、执行HQL查询等。 1. 使用`HibernateTemplate`获取ID为1的对象: ```java SellerAppInfo...
- 在这个例子中,从第0条记录开始获取最多10条记录,即实现了简单的分页功能。 #### 三、使用命名参数的查询 在实际开发中,使用命名参数可以提高代码的可读性和可维护性。 1. **findByNamedParam(String ...
- **复杂性**:直接使用`HibernateTemplate`会稍微简单一些,因为不需要额外的继承结构;而使用`HibernateDaoSupport`则需要继承抽象类,增加了代码的复杂度。 #### 五、示例代码 为了更好地理解`...
- **单参数查询**:当查询条件只有一个时,可以使用带有单个参数的方法,例如:`this.getHibernateTemplate().find("from bean.User u where u.name=?", "test")`,这将返回所有名字为“test”的用户。 - **多参数...
例如,以下是一个简单的`PersonDAOImpl`类的示例: ```java public class PersonDAOImpl implements PersonDAO { private static Log log = LogFactory.getLog(PersonDAOHibernate.class); private ...
例如,我们可以使用以下代码来执行一个简单的 SQL 查询: ```java Session session = HibernateSessionFactory.getCurrentSession(); SQLQuery query = session.createSQLQuery("select * from cats"); List<Cat> ...
- **简单命名查询** ```xml <class></class> <![CDATA[from bean.User]]> // 示例:List<User> users = this.getHibernateTemplate().findByNamedQuery("queryAllUser"); ``` - **带参数的命名查询** ...
3. **合理使用查询参数**:使用合适的查询参数,如使用`LIMIT`和`OFFSET`来实现分页查询,可以有效地减少数据传输量。 #### 三、选择正确的查询方法 不同的查询方法对数据库的性能影响也不同。通过对比实验可以看出...
Session session = this.getHibernateTemplate().getSessionFactory().openSession(); Transaction tran = session.beginTransaction(); try { session.save(userManager); tran.commit(); } catch ...
- **易于测试**:由于使用了Spring的依赖注入,使得单元测试更加简单。 #### 五、注意事项 1. **异常处理**:虽然HibernateTemplate提供了一些异常包装,但在实际开发中还需要结合业务逻辑进行更细致的异常处理。 ...
在实际项目中,你可以创建一个名为`FwxxDAOHibImpl`的DAO实现类,继承`HibernateDaoSupport`,并利用`getHibernateTemplate()`方法获取`HibernateTemplate`实例,进而进行数据库操作。这样,通过Spring的依赖注入,...
List<Cat> cats = getHibernateTemplate().findByCriteria(criteria); ``` #### 三、Criterion与Projection **1. Criterion** - **定义**:`Criterion`是`Criteria`的查询条件。它定义了查询的具体条件,如等于、...
当Spring与Hibernate结合时,Spring提供了`HibernateDaoSupport`类,它为基于Hibernate的DAO(数据访问对象)提供了一种简单而强大的支持。本文将深入探讨`HibernateDaoSupport`的原理、用法以及它如何简化开发工作...
这对于简单的条件查询非常有用。 **示例代码**: ```java List<User> userList = this.getHibernateTemplate().find("from bean.User u where u.name=?", "test"); ``` 或进行模糊查询: ```java List<User> user...