HibernateDaoSupport和本机SQL

时间:2010-02-19 08:35:09

标签: java hibernate spring

我正在使用spring和hibernate写一个DAO

public class DaoImpl extends HibernateDaoSupport implements Dao {}

为了读取或更新数据,我使用的是HQL getHibernateTemplate().bulkUpdate(...),但其中一个查询过于复杂,我需要使用本机SQL Query query = getSession().createSQLQuery(...)

但这样做会挂起我的应用程序

DEBUG org.hibernate.jdbc.ConnectionManager  - opening JDBC connection

我可以通过设置DataSource maxActive字段无限制来防止这种情况,但这不是解决方案。 我的问题是,在HibernateDaoSupport中使用本机SQL是否有任何可靠的方法?非常重要的是,本机查询需要在与其他(HQL)查询相同的事务中执行。

由于

2 个答案:

答案 0 :(得分:3)

您可以将HibernateTemplate配置为不创建新会话:

ht.setAllowCreate(false);
ht.setAlwaysUseNewSession(false);

Javadoc:http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/HibernateTemplate.html#getSession%28%29

答案 1 :(得分:-1)

稍微偏离主题但仍然可能有帮助。 Spring的作者不推荐使用HibernateDaoSupport来实现DAO。检查this blog posting