`

遗留系统hibernate升级到spring+hibernate的问题

阅读更多
遗留系统用的是struts+hibernate,考虑到将来需要添加很多的横切功能,现在系统准备加上spring。现在系统中是在hibernate.cfg.xml中配置的数据源,加上spring后,有一个问题有点迷惑,就是数据源的问题。
1.数据源必须在applicationContext.xml中配置吗,如果是的话,这两个数据源是什么关系?
2.是否可以将hibernate.cfg.xml中配置的数据源改为在applicationContext.xml配置?如果可以的话,原来持久层获取session的方式应该做哪些调整?
3.是否可以在程序中通过某种方式获取hibernate.cfg.xml中配置的数据源?

以上是我想到的几种可能,哪种方法比较合理,请各位指点迷津,谢谢!
分享到:
评论
9 楼 charles751 2008-04-23  
现在采用了数据源和映射文件都配置在hibernate.cfg.xml中,然后在spring中加载的方式.却出现一个问题,service无法注入到action中,怎样查找这个问题出在了什么地方?谢谢
8 楼 charles751 2008-04-22  
把原来的问题再整理下:

遗留系统采用了struts+hibernate,现在想添加spring,由它来做一些横切的功能和总体的控制。
遗留系统的数据源和事务处理是建立在hibernate的基础上,新功能的事务处理当然由spring来管理。
现在的问题是:
原来的数据源的获取和事务的管理可以做改动,但不能对代码做大量的修改。
有没有什么办法,可以实现:
1.遗留系统最小的改动;
2.新功能架设在spring之上;
3.新功能和遗留系统在数据源的获取和事务的管理上,各行其道,互相隔离。

看到有人在hibernate.cfg.xml中和applicationContext.xml中都配置了数据源,不知道两者是什么关系,
感觉这样不太对劲啊?

如果spring管理一个数据源,hibernate管理一个,会不会互相干扰?
如果两者户不相干,那倒是个不错的解决办法
7 楼 seemoon 2008-04-21  
可以,不过最好使用spring的注入方式
6 楼 charles751 2008-04-21  
明白你说的这种方式.
加入spring后,要求是:遗留系统获取数据源的方式可以做适量的改变,但不能引起代码大量的修改.
想了个办法:数据源的配置就按seemoon说的来,然后我写个类,来获取spring生成的连接工厂,这样遗留系统中的关于数据源的部分就不用做太大的改动,这样可行吗?
5 楼 seemoon 2008-04-21  
如果你的数据源是jndi获得的话,不用另外写类,直接在spring中配置就可以,类如:

    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName"><value>you datasource jndi</value></property>
    </bean>

这就是你的数据源,然后注入session factory bean
4 楼 charles751 2008-04-21  
可以写个类,用jndi的方式取得spring配置文件中的数据源吗?
3 楼 seemoon 2008-04-21  
hibernate.cfg.xml仍然保留,因为这是hibernate引擎自己管理的,这个文件不包含数据源配置部分,但是其他如类映射这些仍在这个文件配置,数据源部分交给spring管理也就是配置;遗留系统取session部分要看你原来怎么取了,很可能要改
2 楼 charles751 2008-04-21  
我只要将遗留系统中的hibernate.cfg.xml注入到applicationContext中,是否这样就可以了?遗留系统获取session的程序是否需要改变?遗留系统采用jndi的方式来获取连接工厂的
1 楼 seemoon 2008-04-21  
我理解你的系统变更是这样的,想在系统中添加spring来作为ioc bean管理容器,所以原来的hibernate访问机制也从此改变,改由spring获得,建议你看看struts+spring+hibernate相关的集成文章。

如果引入spring,如何获取数据源,session的提供当然也由spring来提供,因为spring就是作为SSH三者中的粘合剂,在spring当中对hibernate的集成大致如下:
1.一个数据源bean(data source bean),比如你用apache的common dbcp作为数据库连接池,那么就有一个bean的application context的xml声明,不一定要在applicationContext.xml中,你可以叫其他名字比如xx-datasource.xml,只要能让spring加载这个文件就行
2. spring有对hibernate支持的session bean factory封装,在application context的xml配置中声明这个session bean factory,将1中配置的data source bean注入这个factory的dataSource属性中;如果你需要使用spring的jdbctemplate,也需要声明一个template bean,将data source bean也注入到template bean的dataSource属性中
3. 然后在你的应用中使用factory或者template吧,就像你在struts+hibernate一样,比如通过一个什么util来获得factory或session,如果你遗留系统中使用了dao模式,那么从spring的HibernateDaoSupport继承,重写你的基类dao,当然你这个基类dao也需要注入2中的factory

相关推荐

    Spring+hibernate+struts高效培训教材

    【标题】"Spring+hibernate+struts高效培训教材" 涵盖了三个核心的Java企业级开发框架:Spring、Hibernate和Struts。这些技术是构建大型、可扩展和健壮的Java应用程序的基石,尤其在Web应用开发领域。 【Spring框架...

    spring+struts+hibernate的包

    标题中的"spring+struts+hibernate"指的是一个经典的...这个组合在过去的Java Web开发中占有重要地位,虽然现在有许多新型框架出现,如Spring Boot、Spring MVC等,但SSH仍然在很多遗留系统和教育环境中被广泛使用。

    struts2+spring+hibernate整合例子

    - `CVS`是版本控制系统CVS的遗留文件,一般在现代项目中不再使用。 - `.settings`目录包含Eclipse的项目设置。 这个整合例子对于新手来说非常有价值,它提供了一个完整的开发环境,让初学者能快速理解和掌握这三...

    SSH例子,struts+spring+Hibernate

    SSH是Java Web开发中的一个流行框架组合,由Struts、Spring和Hibernate三个开源框架组成。这个框架集成提供了模型-视图-控制器(MVC)架构,使得开发人员能够更高效地构建可维护、可扩展的企业级应用。 Struts是SSH...

    struts+spring+mybatis+hibernate的dtd文件

    在Java Web开发中,Struts、Spring、MyBatis和Hibernate这四个框架各有其特定的配置文件,而这些配置文件有时会使用DTD来定义它们的元素和属性,确保文件格式的正确性。下面将详细阐述这四个框架与DTD的关系以及相关...

    Spring Struts Hibernate的简介

    【SSH 框架简介】 SSH(Struts + Spring + Hibernate)是一种常见的Java Web开发框架组合,...这种组合在过去的Java Web开发中非常流行,但现在已被Spring Boot等现代框架所取代,尽管SSH仍然在许多遗留系统中使用。

    Struts2.2.3+spring3.0.2+hibernate3.5整合

    Struts2.2.3、Spring3.0.2和Hibernate3.5是经典的...然而,随着Spring Boot和Spring MVC的流行,现代项目可能倾向于使用这些更现代的技术栈,但Struts2+Spring+Hibernate的整合仍然在许多遗留系统中发挥着重要作用。

    struts2+spring+ibatis+jquery+json

    Struts2、Spring、iBatis和jQuery是四个在Java Web开发中广泛应用的框架和技术,它们共同构建了一个高效、灵活的后端系统,并通过JSON进行数据交互。下面将详细阐述这些技术及其相互间的整合。 **Struts2** 是一个...

    hibernate-core-3.6.10.Final.jar.zip

    在实际开发中,一个常见的问题是在引入Spring源码时提示找不到`hibernate-core-3.6.10.Final.jar`。这可能是因为类路径设置不正确,或者依赖没有正确地传递。解决这个问题的方法是确保所有的依赖库都已添加到构建...

    基于spring boot + element-ui的后台管理系统.zip

    然而,如果项目中包含对遗留SSM系统的整合,那么MyBatis可能作为另一种ORM工具,与Spring Boot的JPA并行使用,用于处理特定的SQL操作。 在安全方面,Spring Security提供了用户认证和权限控制。它能够轻松地集成到...

    struts2+spring2.5+ibatis

    Struts2、Spring2.5和iBatis是经典的Java Web开发框架组合,它们共同构建了一个灵活...然而,随着Spring Boot和Spring Data JPA等现代框架的兴起,这种老一代的组合逐渐被取代,但它们依然在许多遗留系统中发挥着作用。

    Spring攻略(第二版 中文高清版).part1

    11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 464 11.9.1 问题 464 11.9.2 解决方案 464 11.9.3 工作原理 464 11.10 运行单元和集成测试 466...

    spring4.1.5、4.3.15、4.3.24版本使用的jar包

    5. **Spring的未来**:尽管这些版本已经较旧,但它们仍然是许多遗留系统的核心组成部分。随着Spring的发展,新的版本如Spring 5.x和6.x带来了更多的特性,如对Java 11+的支持、响应式编程模型、Kubernetes集成等。...

    Hibernate 培训.pdf

    - **优点**:允许开发者更细粒度地控制数据库操作,适用于遗留系统改造或已有数据库的复用。 - **缺点**:持久层封装不彻底,更多地像一个数据库帮助类(DBHelper)而非完整的 ORM 框架。 - **Hibernate** - **...

    Spring攻略(第二版 中文高清版).part2

    11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 464 11.9.1 问题 464 11.9.2 解决方案 464 11.9.3 工作原理 464 11.10 运行单元和集成测试 466...

    spring3.0.5架包

    Spring框架是Java开发中不可或缺的一部分,它以其模块化、松耦合和强大的依赖注入特性而闻名...尽管现在已经有更新的版本,但Spring 3.0.5仍然是许多遗留项目的基础,理解并熟练使用它对于维护和升级这些项目至关重要。

    spring2.5.6jar包

    Spring 2.5.6是该框架的一个较早版本,发布于2009年,虽然现在已有更新的版本,但在许多遗留系统或对兼容性有特定需求的项目中,它仍然被广泛使用。以下将详细介绍Spring 2.5.6的主要功能和特点: 1. **依赖注入...

    Hibernate 的Xdoclet模板

    7. **替代方案**:可能会提到随着Java注解处理的流行,如Hibernate的Annotation Processor或使用Spring Data JPA,如何在不依赖Xdoclet的情况下实现类似的自动化配置。 **标签:“源码 工具”** 这两个标签暗示了...

    spring2.5.6架包

    Spring 2.5.6版本是一个较早的版本,但仍然是许多遗留项目中广泛使用的版本。这个"spring2.5.6架包"包含了Spring框架在2.5.6时期的全部组件和依赖,对于那些需要维护旧系统或研究历史版本的开发者来说具有重要价值。...

Global site tag (gtag.js) - Google Analytics