我正在使用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)查询相同的事务中执行。
由于
答案 0 :(得分:3)
您可以将HibernateTemplate配置为不创建新会话:
ht.setAllowCreate(false);
ht.setAlwaysUseNewSession(false);
答案 1 :(得分:-1)
稍微偏离主题但仍然可能有帮助。 Spring的作者不推荐使用HibernateDaoSupport来实现DAO。检查this blog posting。