`

hibernate4,spring3,struts2整合中解决

阅读更多

这两天闲着无聊就改动以前自己写的项目,以前的项目是s2sh3的,加上ehcache,oscache,也算是不比较完整点的了!
这次准备换成hibernate4了,看看的多租户模式。
原以为会很简单,没想到还真费周折。

关键就在sessionFactory,HibernateDaoSupport,HibernateTemplete这里卡到了!
H4已经抛弃了DaoSupport和templete,所以以前的代码业务层就不能直接引用了,需要自己去手动修改了!  这里先看看spring的配置文件吧!

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
		<property name="driverClass" value="com.mysql.jdbc.Driver"> </property> 
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dibang"> </property> 
		<property name="user" value="root"></property> 
		<property name="password" value="root"></property> 
	</bean> 

	<bean id="sessionFactory"
	    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.show_sql">
					true
				</prop>
				<prop key="hibernate.current_session_context_class">
				    org.springframework.orm.hibernate4.SpringSessionContext
				</prop>
			</props>
		</property>

		<property name="packagesToScan"> 
		    <list> 
		        <value>com.virusyang.*</value> 
			</list> 
		</property>
			
			
	</bean>
	<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
        <property name="dataSource" ref="dataSource"></property>
   </bean>


这里的sessionFactory里面的类一定要是org.springframework.orm.hibernate4.LocalSessionFactoryBean,还有就是我使用hibernate.cfg.xml放到sessionFactory里面是不管用的,因为它会去找org.hibernate.cache.cachePrivoder这个类,但是这个类在H4中已经被废弃了!  所以这里推荐使用dataSource,也可以在sessionFactory中自己配置,但是如果不使用dataSource的话,等到自己需要配置transactionManager的时候就会出错,因为事务的管理必须使用dataSource。

然后就是注入的Dao层了,在Dao层里面要显示的声明sessionFactory了,即在类或者接口中要有private SessionFactory sessionFactory的定义,然后需要实现他们的get方法。



本以为这些做完之后就OK了,然后就在类中使用sessionFactory.getCurrentSession()方法了,但是竟然出现了NO SESSION DEFIANE这样的错误,没办法,只能改成sessionFactory.openSession()这个方法了,看了文档,说的是hibernate可以自己处理了,不用spring来管理了,所以getCurrentSession()不能使用了(以前的是spring来生成的),需要在web.xml中加入org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor 这个filter, 然后直接使用getCurrentSession()了,也可以在service类中加入@transactional来进行注释。
就这样,把所有的都替换过之后就OK了!
感觉我那里说错了或者不明白的可以留言。。。
 

分享到:
评论
4 楼 wangshiyang 2013-03-15  
pyzheng 写道
大哥 ,你有针对Hibernate4的oscache配置么? 能不能给我看看.....谢谢

oscache配置的话可以在hibernate配置文件中加载,一般是针对2级缓存进行配置,可以参考这篇文章http://blog.csdn.net/wwxtu24/article/details/3936857
3 楼 pyzheng 2013-03-12  
大哥 ,你有针对Hibernate4的oscache配置么? 能不能给我看看.....谢谢
2 楼 wangshiyang 2012-07-09  
wslovenide 写道
你说的这个我也遇到了,就是最后一点我有点怀疑,sessionFactory.getCurrentSession()现在spring不能使用了,我觉得很奇怪。之前我sessionFactory.getCurrentSession()的时候跟你是一样的错,也是NO SESSION DEFIANE , 但是我在service层的我类上加上了@transactional再使用sessionFactory.getCurrentSession()就没有问题了。我没有查文档,不是具体是咋回事。

嗯,对的,加入这个spring可以按照事务处理类进行初始化!  也可以在web.xml中加入org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor 这个filter,加入之后就不用使用@transactional进行声明了!   直接使用getCurrentSession()了!  
1 楼 wslovenide 2012-07-03  
你说的这个我也遇到了,就是最后一点我有点怀疑,sessionFactory.getCurrentSession()现在spring不能使用了,我觉得很奇怪。之前我sessionFactory.getCurrentSession()的时候跟你是一样的错,也是NO SESSION DEFIANE , 但是我在service层的我类上加上了@transactional再使用sessionFactory.getCurrentSession()就没有问题了。我没有查文档,不是具体是咋回事。

相关推荐

    最新版本的Struts2+Spring4+Hibernate4框架整合

    整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...

    最新项目系统:Struts2+Spring4+Hibernate4三大框架整合

    总的来说,"最新项目系统:Struts2+Spring4+Hibernate4三大框架整合"为学习和实践Java Web开发提供了一个实用的平台,对于提升开发者的技术水平和项目经验具有极大的帮助。通过深入研究和实践,开发者可以掌握Java ...

    spring_struts_hibernate整合开发书籍

    书中会详细讲述如何配置这些框架,使它们协同工作,包括Spring与Hibernate的事务管理、数据源配置、以及Struts2与Spring的整合等。 除此之外,书中还可能涵盖了单元测试、异常处理、安全性配置等方面的内容,这些都...

    Spring+Struts2+hibernate+Redis整合

    在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...

    Hibernate+Spring+Struts2+ExtJS整合开发实例

    在这个整合实例中,开发者还需要关注如何配置各个框架的XML配置文件(如Hibernate的hibernate.cfg.xml,Spring的applicationContext.xml,Struts2的struts.xml等),以确保它们能正确地相互协作。此外,错误处理、...

    Struts2Spring4Hibernate4整合

    Struts2、Spring4和Hibernate4是Java Web开发中的三大框架,它们的整合是构建高效、灵活的企业级应用的常用方式。在这个SSH(Struts2-Spring-Hibernate)整合的DEMO中,我们主要探讨如何将这三个框架无缝连接,实现...

    struts2和spring和Hibernate整合的jar包

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决应用程序的不同问题,而将这三者整合在一起可以构建高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求...

    hibernate struts2 和spring的整合项目

    【标题】:“Hibernate、Struts2与Spring的整合项目” 【描述】:“这是一个将Hibernate、Struts2和Spring三大框架集成在一起的项目示例。它展示了如何在实际开发中有效地结合这三个强大的Java技术,实现数据持久层...

    Spring4+hibernate4+struts2整合

    SSH4整合是指将Spring4、Hibernate4和Struts2集成在一起,以实现一个高效、灵活且可维护的Web应用程序。下面我们将深入探讨这三个框架的核心功能及其整合过程。 **Spring框架** Spring是Java企业级应用的基石,它...

    hibernate+spring+struts一个简单例子

    在一个典型的"hibernate+spring+struts"整合项目中,它们的角色如下: - **Struts** 作为前端控制器,接收用户请求,根据配置决定调用哪个业务逻辑方法。 - **Spring** 用于管理依赖注入(DI),包括Hibernate的...

    struts2 spring hibernate整合的简单登录代码

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2作为MVC框架处理请求和展示,Spring提供依赖注入和事务管理,Hibernate则作为ORM框架处理数据库操作。将这三个框架整合在...

    10.6struts2+hibernate+spring的整合源代码

    SSH(Struts2+Spring+Hibernate)框架整合是Java Web开发中常见的一种技术栈,能有效地提高开发效率和代码质量。 Struts2作为MVC框架,主要负责处理HTTP请求,控制应用程序的流程,提供视图和控制器的分离。它的...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用03

    Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合使用能够构建出高效、可维护性高的Web应用程序。本篇将深入剖析这三者如何协同工作,并提供实际范例应用。 首先,Struts2作为MVC(模型-视图...

    Struts2+Hibernate+Spring整合教程

    Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2专注于MVC(Model-View-Controller)架构的实现,提供强大的动作控制和页面展示;Hibernate作为对象关系映射(ORM)工具,...

    Struts2 hibernate spring 整合案例

    Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2主要用于MVC(Model-View-Controller)架构的实现,提供控制层的支持;Hibernate是对象关系映射(ORM)工具,负责数据持久...

    Struts2 Spring3 Hibernate4 框架完美整合

    Struts2、Spring3和Hibernate4是Java Web开发中三个非常重要的开源框架,它们分别负责MVC模式中的表现层、业务层和数据访问层。这三个框架的整合,通常被称为SSH整合,可以提供一个高效、灵活且功能强大的企业级应用...

    SSH(struts2,Hibernate,Spring)整合及测试亲测可用

    在整合过程中,开发者需要注意配置文件的正确设置,包括Struts2的struts.xml、Hibernate的hibernate.cfg.xml以及Spring的applicationContext.xml等。还需要确保各框架之间的依赖注入正确无误,例如,Spring需要知道...

    struts2-hibernate3-spring整合需要的全部jar包

    "struts2-hibernate3-spring整合需要的全部jar包"正是为了解决这个问题,它包含了所有必要的库文件,使得开发者可以直接引入而无需担心版本冲突。 以下是这个整合所需的一些关键jar包及其作用: 1. **Struts2框架*...

    struts2+spring4+hibernate

    Struts2、Spring4和Hibernate是Java开发中的三大框架,它们在构建企业级Web应用程序时起着核心作用。本教程将深入探讨这三个框架如何协同工作,以实现高效、灵活和可扩展的电子商务平台。 首先,Struts2是一个基于...

    hibernate,struts2,spring 整合jar包

    在SSH整合中,Spring会管理Struts2的动作类和Hibernate的数据访问对象(DAO),并将它们连接起来。 其次,**Struts2框架**是MVC架构的一部分,主要处理用户的请求并控制应用程序的流程。它提供了一种声明式的方式来...

Global site tag (gtag.js) - Google Analytics