'sessionFactory' or 'hibernateTemplate' is require

本文解决了在使用Spring集成Hibernate时出现的java.lang.IllegalArgumentException: sessionFactory或hibernateTemplate is required错误。通过正确配置HibernateTemplate并确保DAO继承类正确引用,成功避免了此异常。
[color=red][size=large]java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required[/size][/color]
今天学习spring的hibernate3支持,总是报这个错误,最后检查了半天,到网上也搜索了半天,原来是我的DAO类继承了HibernateDaoSupport,在方法中用到了HibernateTemplate,因此需要在配置文件中加上如下配置
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
</bean>

DAO代码如下:

package org.ganting.spring.transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class UserDao extends HibernateDaoSupport implements IUserDao {

@Override
public void insert(User user) {
this.getHibernateTemplate().save(user);
}
}


备忘........
`sessionFactory or 'hibernateTemplate' is required` 错误通常是由于使用了 `HibernateDaoSupport` 类,而该类在初始化时检查到 `sessionFactory` 或 `hibernateTemplate` 未正确注入所导致的。以下是一些解决方案: ### 检查配置文件中 `sessionFactory` 的注入 如果类继承了 `HibernateDaoSupport`,则需要在配置文件中明确注入 `sessionFactory`。例如,在 XML 配置中: ```xml <bean id="userManager" parent="baseTxService"> <property name="target"> <bean class="com.lfw.sh.manager.impl.UserManagerImpl" /> </property> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> ``` 确保在配置文件中为继承 `HibernateDaoSupport` 的 Bean 添加了 `sessionFactory` 属性的注入配置[^1][^2][^4]。 ### 检查类继承 确认是否有类错误地继承了 `HibernateDaoSupport`。有时可能将 DAO 中的方法直接拷贝到 MANAGER 类中,导致 MANAGER 类继承了 `HibernateDaoSupport`,从而需要注入 `sessionFactory`[^2]。 ### 检查 `HibernateDaoSupport` 的初始化逻辑 `HibernateDaoSupport` 类在初始化时会检查 `sessionFactory` 或 `hibernateTemplate` 是否存在,如果不存在则会抛出异常。代码如下: ```java class HibernateDaoSupport { // ... protected final void checkDaoConfig() { if (this.hibernateTemplate == null) { throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required"); } } // ... } ``` 确保在使用 `HibernateDaoSupport` 时,其初始化过程中能正确获取到 `sessionFactory` 或 `hibernateTemplate`[^3]。 ### 检查 Bean 名称和引用 确保在配置文件中引用的 `sessionFactory` Bean 名称正确,并且该 Bean 已经被正确定义。 ### 检查配置文件加载 确保 Spring 配置文件被正确加载,且包含了 `sessionFactory` 和相关 Bean 的定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值