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

我最近自愿将我们的最新项目升级到最新版本的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可缺省的CSS布局——张鑫旭

一、技术不难、意识很难 有些东西的东西的实现&#xff0c;难的不是原料、技术&#xff1b;而是想不到&#xff0c;或者说意识不到。 例如下面这个简单而又神奇的魔术&#xff1a; 是吧。搞通了&#xff0c;才发现&#xff0c;哦~原来这么回事&#xff0c;很简单的嘛&#x…

杭电1061题

//求N^N的个位数//思路&#xff1a;只计算个位数的乘积&#xff0c;个位数最后形成一个循环#include <iostream>#include <string>#include <vector>using namespace std;int main(){ int num; cin>>num; for(int i0;i<num;i) { vector<int>…

使用Spring AOP,自定义注释和反射为您的应用审核基础架构

下一篇文章将演示如何使用Spring AOP和注释编写简单的审计。 审核机制将是干净&#xff0c;高效且易于维护的&#xff08;和Kewwl&#xff01;&#xff09;。 我将在用户管理系统上演示我的示例&#xff08;假设您对反射和AOP具有一般知识&#xff09;。 我们从简单的数据库表…

Git命令总结(附详解)

1.进入某文件目录后&#xff1a;git init 是该目录成为git仓库 2.将改动存入暂存区&#xff1a;git add filename 3.将文件提交到仓库&#xff1a;git commit -m ‘该修改的注释’ 4.查看修改内容以及是否提交&#xff1a;git status 5.查看文件修改内容&#xff1a;git diff f…

JSON 使用 教程

JSONP 教程 本章节我们将向大家介绍 JSONP 的知识。 Jsonp(JSON with Padding) 是 json 的一种"使用模式"&#xff0c;可以让网页从别的域名&#xff08;网站&#xff09;那获取资料&#xff0c;即跨域读取数据。 为什么我们从不同的域&#xff08;网站&#xff09;访…

SQL Cookbook:二、查询结果排序(1)以指定的次序返回查询结果

问题 显示部门10中员工的名字、职位和工资&#xff0c;并按照工资的升序排列。结果集如下所示&#xff1a; ENAME JOBSAL---------- -------------------MILLER CLERK 1300CLARK MANAGER 2450KING PRESIDENT 5000解决方案 使用ORDER BY子句&#xff1a; select ename,job,sal…

经过几天的Scala回归Java的10个最烦人的事情

因此&#xff0c;我正在尝试使用Scala&#xff0c;因为我想编写一个解析器&#xff0c;而Scala Parsers API似乎非常合适。 毕竟&#xff0c;我可以在Scala中实现解析器并将其包装在Java接口后面&#xff0c;因此除了附加的运行时依赖关系之外&#xff0c;不应该存在任何互操作…

LeetCode 198. 打家劫舍(House Robber) 5

198. 打家劫舍198. House Robber 题目描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自…

SpringBoot 参数符号转义,用这个包下面的类

SpringBoot 参数符号转义&#xff0c;用这个包下面的类 org.apache.commons.text.StringEscapeUtils String team StringEscapeUtils.unescapeHtml4(biUserOrganization.getTeam()); 2017/12/01 | Java | admin| 暂无评论 | 8717 views如题所示&#xff0c;之前一直使用c…

irrlicht v1.6 例程18 Splitscreen

/** Example 018 Splitscreen, U( a# q, ( S f1 ]( p作者&#xff1a;Max Winkel." 9 ?( W; K V1 x8 \译&#xff1a;小时候可靓了&#xff08;履霜坚冰&#xff09;2 m! C! N# J2 i6 a2 Z! Q0 U2 D4 U: U% J1 E5 N! a0 L4 q& x这个例程中我们将学习怎么使用irrlicht…

检查Red Hat JBoss BRMS部署架构的规则和事件(第二部分)

&#xff08;文章来宾与北美红帽公司高级中间件顾问约翰赫洛克 &#xff08; John Hurlocker&#xff09;合着&#xff09; 在本周的技巧中&#xff0c;我们将放慢速度&#xff0c;并仔细研究可能的Red Hat JBoss BRMS部署体系结构。 当我们谈论部署架构时&#xff0c;我们指…

博客园皮肤-我的博客园皮肤设置教程

一、前言 好的博客皮肤能吸引更多的访问量&#xff0c;也可以使博主更有动力更新博客。今天看到一个博主的博客非常漂亮&#xff0c;突发奇想也打扮了一下自己的博客&#xff0c;虽然差距还有不小&#xff0c;也记录一下操作方法供大家参考。 二、操作 1.左上角“fork me on gi…

设计撑百万并发的数据库架构

设计撑百万并发的数据库架构 https://www.toutiao.com/a6742034135486824973/ 前言 作为一个全球人数最多的国家&#xff0c;一个再怎么凄惨的行业&#xff0c;都能找出很多的人为之付出。而在这个互联网的时代&#xff0c;IT公司绝对比牛毛还多很多。但是大多数都是创业公司&a…

Spring MVC集成测试:断言给定的模型属性有全局错误

为了使用Bean验证报告Spring MVC中的全局错误&#xff0c;我们可以创建一个自定义的类级别约束注释。 全局错误与已验证Bean中的任何特定字段都不相关。 在本文中&#xff0c;我将展示如何使用Spring Test编写测试&#xff0c;以验证给定的model属性是否存在全局验证错误。 自…

Intent 的用法

1、用Context指定 Intent inew Intent(context,Receivered.class); context.startActivity(i);2、通过配置指定 <activity android:name"com.neusoft.android.Demo.photo.TestActivity"> <intent-filter> <action android:n…

Tips_一级菜单栏实现

1.纵向 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>menu01</title>6 <style type"text/css">7 *{8 margin: 0;9 pad…

数学基础 - 向量

1. 向量(Vector) 向量指具有大小和方向的量。 2 基(Basic,基底) 2.1 线性无关 在一个向量空间\(V_n\)中&#xff0c;假设&#xff1a; \(a_1e_1 ⋯ a_ne_n 0\)  (式1) 只在 \(a_1 ⋯ a_n 0\) 时成立&#xff0c;那么向量 \(\{e_1, e_2, ..., e_n\}\) 是线性无关的。 如…

2-使用git管理一个单片机程序

https://www.cnblogs.com/yangfengwu/p/10842205.html 我用电脑压缩一个文件,然后通过git上传,然后在新买的linux系统通过wget 网络下载这个压缩文件,然后死活解压不可以...无论是哪种格式的文件 一开始我怀疑是压缩软件压缩的问题,就换了一个压缩软件进行压缩,但是没有解决问题…

Java线程面试的前50个问题,面向初学者和经验丰富的程序员

您可以参加任何Java面试&#xff0c;无论是大四还是中级&#xff0c;经验或新来的人&#xff0c;一定会看到线​​程&#xff0c;并发和多线程中的几个问题。 实际上&#xff0c;这种内置的并发支持是Java编程语言的最强优势之一&#xff0c;并帮助它在企业界和程序员中同样流行…

《写给大家看的Web设计书(第3版)》即将上市

《写给大家看的设计书》姊妹篇——《写给大家看的Web设计书&#xff08;第3版&#xff09;》 即将上市。它是Robin Williams的又一本设计书。 也许大家对Robin Williams的畅销书《写给大家看的设计书》还念念不忘&#xff0c;还在回味那些简单凝练的设计经验。那好&#xff0c;…