摘自网上,主要是用HibernateCallBack来实现以hibernate方式执行
下面将为您介绍在HibernateTemplate里执行的两种SQL语句,一种执行非Select语句的情况,以及一种执行Select语句的情况,供您参考,希望对您有所启迪。
如下所示只能执行非Select语句;
public static void executeSQL(HibernateTemplate hibernateTemplate, String sql) { final String tempsql = sql; hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { session.createQuery(tempsql).executeUpdate(); return null; } }); }
若要执行Select则用session.createQuery(tempsql).list();
此处final String tempsql = sql;必须为final 表示tempsql不可以修改;
内联类的要求;
public Object doInHibernate(Session session)返回Object等于hibernateTemplate.execute(new HibernateCallback()的返回,可以通过查看源代码看的出来;
下面是执行select语句的情况:
return (List)hibernateTemplate.execute(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException
{
List list=session.createQuery(tempsql).list();
return list;
}
});
相关推荐
在上面的代码中,我们使用 `HibernateCallback` 接口来执行原生 SQL 语句,该接口提供了一个 `doInHibernate()` 方法,该方法将在 Hibernate 事务中执行。我们可以在该方法中执行原生 SQL 语句,并使用 `Connection`...
对于批量删除数据,`HibernateTemplate`提供了`bulkUpdate()`方法,该方法通过执行SQL语句或HQL(Hibernate查询语言)来高效地处理大量数据的删除操作,避免了逐条删除所带来的性能瓶颈。 ### 批量删除操作详解 在...
3. **批处理操作**:支持批量执行SQL语句,优化数据库访问性能。 4. **自定义查询**:支持HQL(Hibernate Query Language)和原生SQL查询。 #### 三、HibernateTemplate的初始化与配置 `HibernateTemplate`可以...
HibernateTemplate还提供了诸如`executeFind(HibernateCallback)`用于执行带参数的HQL查询,`update(String sql, Object[] args)`用于执行SQL更新语句等功能,以及对事务处理的支持。 综上,HibernateTemplate是...
- **功能**:执行 HQL 查询语句,返回查询结果。 - **示例代码**: ```java List<User> users = template.find("from User u where u.age > ?"); ``` 5. **findByNamedQuery(String queryName)**: - **功能*...
Spring提供的持久层访问的方式,无须显式地打开和关闭Session,也无须在代码中执行任何的事务操作语句。 Spring提供了HibernateTemplate,用于持久层访问。它只要获得SessionFactory的引用,就可以智能地打开Session...
虽然`HibernateTemplate`提供了很多便利,但它在处理复杂查询时可能需要创建内部类(inner class),如在分页查询时使用`execute(HibernateCallBack)`,这可能会增加调试的复杂性。相比之下,直接使用`Session`进行...
例如,`bulkUpdate`方法可以直接执行SQL更新或删除语句,极大提高了效率。需要注意的是,批量操作后,由于对象可能在Hibernate的缓存中,所以需要手动清除缓存以保持数据一致性。 E. `execute`: 这是一个核心方法...
在实现分页查询时,需要注意的是,要在HibernateCallback的`doInHibernate`方法中编写HQL语句或Criteria查询,通过Session创建Query对象,然后设置分页参数(如`setFirstResult`和`setMaxResults`),最后执行查询。...