`

遗留系统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攻略(第二版 中文高清版).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...

    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...

    Spring中文帮助文档

    2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)容器 3.1. 简介 3.2. 基本原理 - 容器和bean 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean ...

    Spring API

    2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)容器 3.1. 简介 3.2. 基本原理 - 容器和bean 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean ...

    legacy-erp:用于Spring MVC和Hibernate实践的旧版ERP项目

    遗留的erp 传统ERP是一个简单的Java项目,仅用于学习和实践目的。 大部分已使用过的旧技术,例如Spring MVC技术领域Java 11 GradleSpring Boot,MVC,JPA 冬眠H2数据库胸腺JUnit 5路线图去做 : 修复删除分配给部门...

    仿知乎java源码-refactoring-to-rails:将Spring/Hibernate应用程序重构为Rails的示例

    这是一个演示如何重构遗留 Java 项目以使用 Rails 的项目。 整个存储库历史旨在从头到尾读取。 每个提交消息都用该特定步骤的目标和预期进行注释。 如果您只是从特定快照复制或模仿代码而不了解它是如何到达那里的,...

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    1.2.2 对历史遗留项目的支持较为困难 2 1.3 Grails的诞生解决了一些遗憾 3 1.3.1 Groovy语言 3 1.3.2 Grails站在了巨人的肩膀之上 3 1.3.3 Grails有良好的扩展性 3 1.4 对Grails的一些误解 3 1.5 本书的使用说明 4 ...

    亿美内容管理系统 ExmayCMS v1.1.5 Beta.rar

    ExmayCMS采用Struts2 Spring Hibernate Lucene3 EhCache Freemarker JQuery等主流技术架构,默认使用MySQL数据库,并支持Oracle、SqlServer、Sybase、DB2等主流数据库,全部源代码永久开放,无任何功能限制。...

    grails和flex的集成手册

    Grails 是一种新型 Web 开发框架,它将常见的 Spring 和 Hibernate 等 Java 技术与当前流行的约定优于配置等实践相结合。Grails 是用 Groovy 编写的,它可以提供与遗留 Java 代码的无缝集成,同时还可以加入脚本编制...

    精通Grails IMB讲解

    Grails 是一种新型 Web 开发框架,它将常见的 Spring 和 Hibernate 等 Java 技术与当前流行的约定优于配置等实践相结合。Grails 是用 Groovy 编写的,它可以提供与遗留 Java 代码的无缝集成,同时还可以加入脚本编制...

    iBATIS实战

    1.3.4 遗留数据库 20 1.4 iBATIS如何解决数据库的常见问题 20 1.4.1 所有权与控制 20 1.4.2 被多个分散的系统访问 21 1.4.3 复杂的键和关系 21 1.4.4 数据模型的去规范化或过度规范化 22 1.4.5 瘦数据模型 23 1.5 小...

Global site tag (gtag.js) - Google Analytics