我最近自愿将我们的最新项目升级到最新版本的Spring Platform。 Spring Platform为您提供的是整个Spring框架库集中的依赖项和插件管理。

由于我们落后了一点,升级确实增加了一些乐趣。 这是我遇到的事情:

Maven:

我们的pom文件仍在引用:
hibernate.jar
ehcache.jar

这些伪像不会在最新版本上退出,因此请使用hibernate-core.jarehcache-core.jar替换它们。

我们还仍然使用休眠工具+ maven run插件对我们的db对象进行反向工程。 我需要更新为候选版本:

<hibernate-tools .version="">4.3.1.CR1</hibernate-tools>

休眠:

代码:“ Hibernate.createBlob”…不再存在

替换为:

private Blob createBlob(final byte[] bytes) {
return NonContextualLobCreator.INSTANCE.wrap(NonContextualLobCreator.INSTANCE.createBlob(bytes));
}

在HibernateTemplate上,返回类型现在为List; 不是元素…因此需要为要返回的列表添加演员表。

import org.hibernate.classic.Session;

替换为:

import org.hibernate.Session;

逆向工程师的工作方式略有不同……
将Long分配给数字…
添加:

<type-mapping><sql-type jdbc-type="NUMERIC" precision="4" hibernate-type="java.lang.Integer" /><sql-type jdbc-type="NUMERIC" precision="6" hibernate-type="java.lang.Integer" /><sql-type jdbc-type="NUMERIC" precision="8" hibernate-type="java.lang.Integer" /><sql-type jdbc-type="NUMERIC" precision="10" hibernate-type="java.lang.Long" /><sql-type jdbc-type="DECIMAL" precision='4' scale='0' hibernate-type="java.lang.Integer" not-null="true"/><sql-type jdbc-type="DECIMAL" precision='6' scale='0' hibernate-type="java.lang.Integer" not-null="true"/><sql-type jdbc-type="DATE" hibernate-type="java.util.Date"/>
</type-mapping>

可能的错误:

  • 原因:org.hibernate.service.UnknownUnwrapTypeException:无法解包为请求的类型[javax.sql.DataSource]

为c3p0添加依赖项:

<dependency><groupid>org.hibernate</groupId><artifactid>hibernate-c3p0</artifactId><version>${hibernate.version}</version>
</dependency>

并在cfg.xml中为其配置设置:

<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
  • 引起原因:java.lang.ClassNotFoundException:org.hibernate.engine.FilterDefinition

可能仍在某处使用对hibernate3 factory / bean的引用,更改为hibernate4:

org.springframework.orm.hibernate3.LocalSessionFactoryBean
org.springframework.orm.hibernate3.HibernateTransactionManager
  • 由以下原因引起:java.lang.ClassNotFoundException:无法加载请求的类:org.hibernate.hql.classic.ClassicQueryTranslatorFactory新API进行了细微更改,因此可以通过将属性值替换为:
org.hibernate.hql.internal .classic.ClassicQueryTranslatorFactory.

弹簧:

令人惊讶的是,我们的某些应用程序上下文文件仍然引用了Spring DTD……替换为XSD:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

在为c3p0添加的Spring配置中:

<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">20</prop>
<prop key="hibernate.c3p0.timeout">300</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
<prop key="hibernate.c3p0.idle_test_period">3000</prop>

Spring删除了“ local” =:因此只需将其更改为“ ref” =

Spring HibernateDaoSupport不再具有:“ releaseSession(session);”,这是一件好事,因此被迫更新代码以在事务中工作。

可能的错误:

  • 如果没有活动事务,则getFlushMode无效; 嵌套的异常是org.hibernate.HibernateException:如果没有活动的事务,则getFlushMode无效

从休眠属性中删除:

<prop key="hibernate.current_session_context_class">thread</prop>
为“当前” Session的范围提供自定义策略。 有关内置策略的更多信息,请参见第2.5节“上下文会话” 。
  • org.springframework.dao.InvalidDataAccessApiUsageException:只读模式(FlushMode.MANUAL)中不允许写操作:将Session变为FlushMode.COMMIT / AUTO或从事务定义中删除“ readOnly”标记。

另一种选择是:

<bean id ="productHibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name="sessionFactory" ref="productSessionFactory"/>
<property name="checkWriteOperations" value="false"/>
</bean>
  • java.lang.NoClassDefFoundError:javax / servlet / SessionCookieConfig

Servlet版本更新:

<dependency><groupid>javax.servlet</groupId><artifactid>servlet-api</artifactId><version>3.0.1</version>
</dependency>
  • 然后在weblogic javassist上进行部署:$$ _ javassist_无法转换为javassist.util.proxy.Proxy

这里的问题是有不同版本的javassist被带入了耳朵。 我从所有pom中删除了所有引用,以便从Spring / Hibernate中获取正确的版本…

然后将weblogic配置为首选我们的版本:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application><application-param><param-name>webapp.encoding.default</param-name><param-value>UTF-8</param-value></application-param><prefer-application-packages>
<package-name>javax.jws.*</package-name>
<package-name>org.apache.xerces.*</package-name>
<package-name>org.apache.xalan.*</package-name>
<package-name>org.apache.commons.net.*</package-name>
<package-name>org.joda.*</package-name>
<package-name>javassist.*</package-name>
</prefer-application-packages>
</weblogic-application>

翻译自: https://www.javacodegeeks.com/2014/08/upgrading-spring-3-x-and-hibernate-3-x-to-spring-platform-1-0-1-spring-hibernate-4-x.html

将Spring 3.x和Hibernate 3.x升级到Spring Platform 1.0.1(Spring + hibernate 4.x)相关推荐

  1. Java 近期新闻:Grail 5.0、Spring、Hibernate、WildFly 及 Kotlin Multik 开发库更新

    2021 年 10 月 11 日起始周 Java 新闻更新:OpenJDK.JDK 18.Spring Framework.Grails 5.0.Micronaut 3.1.Helidon 2.3.4 ...

  2. JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

    Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring?  Spring是分层的Java ...

  3. 0、Spring 注解驱动开发

    0.Spring注解驱动开发 0.1 简介 <Spring注解驱动开发>是一套帮助我们深入了解Spring原理机制的教程: 现今SpringBoot.SpringCloud技术非常火热,作 ...

  4. 【Rocket MQ】RocketMQ4.2.0 和 spring boot的结合使用,实现分布式事务

    RocketMQ4.2.0 和 spring boot的结合使用,实现分布式事务 参考地址:https://www.jianshu.com/p/f57de40621a0

  5. Tomcat 6.0.32 +Spring dbcp datasource关闭Tomcat出现严重异常

    异常如下: 信息: Pausing Coyote HTTP/1.1 on http-8080 2014-3-6 14:52:50 org.apache.catalina.core.StandardSe ...

  6. Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式1

    0. 前言 之前帐号认证用过自己写的进行匹配,现在要学会使用标准了.准备了解和使用这个OAuth2.0协议. 1. 配置 1.1 配置pom.xml 有些可能会用不到,我把我项目中用到的所有包都贴出来 ...

  7. idea中生成spring的 xml配置文件_【132期】面试再被问到Spring容器IOC初始化过程,就拿这篇文章砸他~...

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  8. 使用Spring Security和OAuth 2.0保护Spring微服务架构

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 每个开发 ...

  9. cdi 2.7.5_集成测试CDI 1.0和Spring 3.1中的作用域bean

    cdi 2.7.5 在这篇博客文章中,我描述了如何在Spring和CDI中使用作用域bean进行集成测试. 一切都用小代码示例进行说明. 使用范围进行集成测试并不是特别容易. 想象一下存在于会话范围内 ...

  10. Spring Boot 1.0和Spring Boot 1.0.1错误修复版本

    Spring Boot团队最近宣布了Spring Boot 1.0版本 ,随后是Spring Boot 1.0.1.RELEASE ,这是一个错误修复版本,其中还包含一些新功能. Spring Boo ...

最新文章

  1. python流程图基本元素-Python初学(十一)
  2. cocos2d-x 2.x版本使用uiwidget需要注意的几点
  3. js中text方法是啥意识_一盏茶的时间,快速捕获JS中常用的方法(细心整理,持续更新ing)...
  4. PHP开发之环境配置
  5. 用R做heatmap示例:NBA联盟50位顶级球员的指标表现
  6. python 面向对象 私有化浅析
  7. 汇编语言不带冒号标号的用法
  8. Linux系统电脑非正常关机之后可能出现在登录界面循环的情况
  9. easyexcel导入简单封装
  10. 数据结构之 二叉树---求二叉树后序遍历和层次遍历(先建树,再遍历)
  11. Oracle技术之串行隔离对延迟段和INTERVAL分区的支持
  12. springboot定时备份MYSQL_spring boot 定时备份数据库
  13. MATLAB人脸识别区域定位实战源码解析
  14. 【Pytorch with fastai】第 3 章 :数据伦理
  15. 西游记中托塔李天王的三个儿子,一个女儿和一个干女儿
  16. 2022年江西省职业院校技能大赛“网络空间安全”比赛任务书
  17. Mysql数据库简单回滚操作
  18. joda DateTimeFormatter simpleDateFormat
  19. 2014年放假安排时间表
  20. AlexNet架构重现与解析

热门文章

  1. Sring类型数组赋值
  2. IDEA把Springboot打成可执行jar包,内嵌tomcat 这个可以用
  3. javaI/O流小结
  4. 微信小程序定时器setInterval()的使用注意事项
  5. solid设计原则_SOLID设计原则
  6. 内联脚本被视为是有害的_数据类被认为有害
  7. latex如何使节标题居左_为使节构建控制平面的指南第3部分-特定于域的配置API...
  8. jdeps_JDeps入门–分析项目的依赖关系
  9. jpa 使用jdbc_在JPA和JDBC中使用存储过程。 嗯,只要使用jOOQ
  10. jboss fuse 教程_使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行