`

spring 整合hibernate报错'sessionFactory' or 'hibernateTemplate' is required异常

    博客分类:
  • SSH
 
阅读更多
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+hibernate

    通常,这样的资料会涵盖Spring的ApplicationContext配置、Hibernate的SessionFactory配置、两者的整合方式,如使用HibernateTemplate或JPA,以及如何在Spring MVC中处理数据请求等。 学习Spring和Hibernate的整合,...

    Spring4整合Hibernate5详细步骤

    《Spring4整合Hibernate5的详细步骤》 在现代企业级开发中,Spring框架和Hibernate作为Java后端的两大支柱,常常被联合使用以实现强大的数据访问功能。本文将深入探讨如何将Spring4与Hibernate5进行整合,为开发者...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    1. **配置**: 配置Spring的`LocalSessionFactoryBean`,指定Hibernate的相关属性,如配置文件、实体类包等,生成SessionFactory。 2. **依赖注入**: 将SessionFactory注入到需要的地方,然后创建Session。Spring...

    hibernate3.5与spring2.5.5整合最佳实践

    整合Hibernate与Spring的主要目的是利用Spring的IoC(控制反转)容器来管理Hibernate的SessionFactory和Session,这样可以避免在代码中手动创建和关闭Session,提高代码的可测试性和可维护性。 1. **配置环境** - ...

    Spring+Hibernate+Struts2

    ### Spring+Hibernate+Struts2 整合开发详解 #### 一、Spring+Hibernate整合 在企业级应用开发中,Spring框架与Hibernate框架的结合使用非常常见。这种整合主要是为了利用Spring的轻量级特性来简化Hibernate的配置...

    Spring+hibernate参考书

    《Spring+Hibernate参考书》是一本专注于整合Spring框架与Hibernate持久化库的指南,旨在帮助开发者深入了解和熟练掌握这两种在Java开发中广泛使用的开源技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)...

    struts+spring+hibernate面试题.doc

    在Spring中使用Hibernate时,可以利用`HibernateTemplate`简化常见的CRUD操作,同时Spring的事务管理器能无缝集成Hibernate的事务处理,提供统一的事务控制。通过Spring配置,可以轻松管理Hibernate的SessionFactory...

    spring分别与jdbc和hibernate结合的事务控制--案例

    在Spring中,我们可以使用HibernateTemplate或SessionFactoryBean来配置和管理Hibernate。同样,Spring的声明式事务管理也可以应用到Hibernate上,只需将@Transactional注解添加到使用Hibernate的方法上,Spring就会...

    HibernateTemplate源代码

    `HibernateTemplate`提供了一种统一的异常处理机制,可以将Hibernate抛出的各种异常转换为Spring的`DataAccessException`异常层次结构中的异常。这有助于应用程序以一致的方式处理所有数据访问异常。 ```java ...

    Spring2.5和Hibernate3集成--学习spring aop ioc

    Spring2.5和Hibernate3集成 采用声明式事务 1.声明式事务的配置 * 配置sessionFactory * 配置事务管理器 * 配置事务的传播特性 * 配置哪些类哪些方法使用事务 2.编写业务逻辑方法 * 继承...

    ssh(structs,spring,hibernate)框架中的上传下载

     TfileDAOHibernate通过扩展Spring提供的Hibernate支持类HibernateDaoSupport而建立,HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute...

    Spring与Hibernate整合事务管理的理解

    Spring与Hibernate整合事务管理是企业级Java应用中的常见实践,旨在提供高效且一致的数据操作体验。在不使用Spring的情况下,Hibernate事务管理需要手动开启、提交和关闭事务,以确保数据一致性。然而,对于复杂的...

    struts spring hibernate面试题

    - **集成方法**:在 Spring 中,可以通过 `SessionFactory` 和 `HibernateTemplate` 或 `JpaTemplate` 简化 Hibernate 的使用。`SessionFactory` 提供了创建 Session 的工厂,而 `HibernateTemplate` 或 `...

    ssh 框架完全整合笔记

    1. **无需Hibernate配置文件**:在Spring整合Hibernate时,我们不再在Hibernate的配置文件(hibernate.cfg.xml)中配置数据源、SessionFactory等,而是将其移到Spring的配置文件中,如`applicationContext.xml`。...

    SpringMVC+Hibernate全注解整合

    &lt;bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"&gt; &lt;property name="sessionFactory" ref="sessionFactory" /&gt; class="org.springframework.orm.hibernate3....

    struts+hibernate,spring面试题

    在Spring中使用Hibernate,通常需要配置SessionFactory、TransactionManager,使用HibernateTemplate或SessionFactoryBean进行数据访问,同时结合Spring的声明式事务管理,确保事务的正确性和一致性。 以上是对SSH...

    spring笔记

    开发人员可以通过Spring管理Hibernate的SessionFactory,并利用`HibernateTemplate`进行数据访问操作。 **2. Spring与Struts的整合** Spring可以作为Struts框架的替代方案来管理Action对象,这有助于简化Struts框架...

    最全的Spring考题与答案

    Spring框架是Java开发中不可或缺的一部分,它以其丰富的功能和易用性深受开发者喜爱。以下是针对题目提供的内容,详细解析Spring框架的相关知识点。 1. **Spring框架的优点** - 分层架构:Spring允许开发者选择...

    spring面试题大全.doc

    - **配置 DataSource 和 SessionFactory**:在 Spring 配置文件中定义数据源和 Hibernate 的 SessionFactory,设置相应的参数。 - **DAO 层集成**:DAO 类继承自 HibernateDaoSupport,并实现具体业务接口,通过 ...

    spring2.5学习PPT 传智博客

    - 集成Hibernate,利用SessionFactory和HibernateTemplate。 - 集成Struts1和Struts2,实现MVC架构。 - 集成JPA,使用EntityManager和HibernateJpaVendorAdapter。 - 配置二级缓存(如Hibernate的EHCache)以...

Global site tag (gtag.js) - Google Analytics