Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:118) at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ... 36 more
原因:
我的pageDaoImpA继承了org.springframework.orm.hibernate3.support.HibernateDaoSupport, spring在初始化容器的时候会对这个对象作一个check, 可以看看HibernateDaoSupport源码中的checkDaoConfig()方法
protected final void checkDaoConfig() { if (this.hibernateTemplate == null) throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required"); }
我的结构是PageDaoImpA继承 HibernateDaoSupport.因为HibernateDaoSupport里需要用到SessionFactory或hibernateTemplate
<bean id="pageDao" class ="com.lft.daoImp.PageDaoImpA"> <!-- hibernateDaoSupport需要注入sessionFactory或hibernateTemplate --> <property name="hibernateTemplate" ref="hibernateTemplate"> </property> </bean>
上面的配置就把SessionFactory注入进去了。
现在我使用的是注解, DaoSupport中需要这样才能成功注入SessionFactory
@Transactional//具有默认的事务行为 public abstract class PageDaoImpA extends HibernateDaoSupport implements DAO { /** * 【注入 SessionFactory】 * 注入一个sessionFactory属性,并注入到父类(HibernateDaoSupport )里 */ private SessionFactory sessionFacotry; //注入一个bean, 默认(name = "sessionFactory"), 因此只写@Resource @Resource public void setSessionFacotry(SessionFactory sessionFacotry) { super.setSessionFactory(sessionFacotry); } //省略非重点代码... }
以上代码可能有误:
public class BaseDao extends HibernateDaoSupport{ @Resource(name="sessionFactory") public void setSuperSessionFactory(SessionFactory sessionFactory) { super.setSessionFactory(sessionFactory); } }
相关推荐
通常,这样的资料会涵盖Spring的ApplicationContext配置、Hibernate的SessionFactory配置、两者的整合方式,如使用HibernateTemplate或JPA,以及如何在Spring MVC中处理数据请求等。 学习Spring和Hibernate的整合,...
《Spring4整合Hibernate5的详细步骤》 在现代企业级开发中,Spring框架和Hibernate作为Java后端的两大支柱,常常被联合使用以实现强大的数据访问功能。本文将深入探讨如何将Spring4与Hibernate5进行整合,为开发者...
1. **配置**: 配置Spring的`LocalSessionFactoryBean`,指定Hibernate的相关属性,如配置文件、实体类包等,生成SessionFactory。 2. **依赖注入**: 将SessionFactory注入到需要的地方,然后创建Session。Spring...
整合Hibernate与Spring的主要目的是利用Spring的IoC(控制反转)容器来管理Hibernate的SessionFactory和Session,这样可以避免在代码中手动创建和关闭Session,提高代码的可测试性和可维护性。 1. **配置环境** - ...
### Spring+Hibernate+Struts2 整合开发详解 #### 一、Spring+Hibernate整合 在企业级应用开发中,Spring框架与Hibernate框架的结合使用非常常见。这种整合主要是为了利用Spring的轻量级特性来简化Hibernate的配置...
《Spring+Hibernate参考书》是一本专注于整合Spring框架与Hibernate持久化库的指南,旨在帮助开发者深入了解和熟练掌握这两种在Java开发中广泛使用的开源技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)...
在Spring中使用Hibernate时,可以利用`HibernateTemplate`简化常见的CRUD操作,同时Spring的事务管理器能无缝集成Hibernate的事务处理,提供统一的事务控制。通过Spring配置,可以轻松管理Hibernate的SessionFactory...
在Spring中,我们可以使用HibernateTemplate或SessionFactoryBean来配置和管理Hibernate。同样,Spring的声明式事务管理也可以应用到Hibernate上,只需将@Transactional注解添加到使用Hibernate的方法上,Spring就会...
`HibernateTemplate`提供了一种统一的异常处理机制,可以将Hibernate抛出的各种异常转换为Spring的`DataAccessException`异常层次结构中的异常。这有助于应用程序以一致的方式处理所有数据访问异常。 ```java ...
Spring2.5和Hibernate3集成 采用声明式事务 1.声明式事务的配置 * 配置sessionFactory * 配置事务管理器 * 配置事务的传播特性 * 配置哪些类哪些方法使用事务 2.编写业务逻辑方法 * 继承...
TfileDAOHibernate通过扩展Spring提供的Hibernate支持类HibernateDaoSupport而建立,HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute...
Spring与Hibernate整合事务管理是企业级Java应用中的常见实践,旨在提供高效且一致的数据操作体验。在不使用Spring的情况下,Hibernate事务管理需要手动开启、提交和关闭事务,以确保数据一致性。然而,对于复杂的...
- **集成方法**:在 Spring 中,可以通过 `SessionFactory` 和 `HibernateTemplate` 或 `JpaTemplate` 简化 Hibernate 的使用。`SessionFactory` 提供了创建 Session 的工厂,而 `HibernateTemplate` 或 `...
1. **无需Hibernate配置文件**:在Spring整合Hibernate时,我们不再在Hibernate的配置文件(hibernate.cfg.xml)中配置数据源、SessionFactory等,而是将其移到Spring的配置文件中,如`applicationContext.xml`。...
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory" /> class="org.springframework.orm.hibernate3....
在Spring中使用Hibernate,通常需要配置SessionFactory、TransactionManager,使用HibernateTemplate或SessionFactoryBean进行数据访问,同时结合Spring的声明式事务管理,确保事务的正确性和一致性。 以上是对SSH...
开发人员可以通过Spring管理Hibernate的SessionFactory,并利用`HibernateTemplate`进行数据访问操作。 **2. Spring与Struts的整合** Spring可以作为Struts框架的替代方案来管理Action对象,这有助于简化Struts框架...
Spring框架是Java开发中不可或缺的一部分,它以其丰富的功能和易用性深受开发者喜爱。以下是针对题目提供的内容,详细解析Spring框架的相关知识点。 1. **Spring框架的优点** - 分层架构:Spring允许开发者选择...
- **配置 DataSource 和 SessionFactory**:在 Spring 配置文件中定义数据源和 Hibernate 的 SessionFactory,设置相应的参数。 - **DAO 层集成**:DAO 类继承自 HibernateDaoSupport,并实现具体业务接口,通过 ...
- 集成Hibernate,利用SessionFactory和HibernateTemplate。 - 集成Struts1和Struts2,实现MVC架构。 - 集成JPA,使用EntityManager和HibernateJpaVendorAdapter。 - 配置二级缓存(如Hibernate的EHCache)以...