fetching jdbc connection from(Spring事务管理高级应用难点剖析(4))

2024-07-03 07:22:34 18

fetching jdbc connection from(Spring事务管理高级应用难点剖析(4))

本文目录

Spring事务管理高级应用难点剖析(4)

   多线程的困惑

  由于Spring事务管理器是通过线程相关的ThreadLocal来保存数据访问基础设施 再结合IOC和AOP实现高级声明式事务的功能 所以Spring的事务天然地和线程有着千丝万缕的联系

  我们知道Web容器本身就是多线程的 Web容器为一个Http请求创建一个独立的线程 所以由此请求所牵涉到的Spring容器中的Bean也是运行于多线程的环境下 在绝大多数情况下 Spring的Bean都是单实例的(singleton) 单实例Bean的最大的好处是线程无关性 不存在多线程并发访问的问题 也即是线程安全的 一个类能够以单实例的方式运行的前提是 无状态 即一个类不能拥有状态化的成员变量 我们知道 在传统的编程中 DAO必须执有一个Connection 而Connection即是状态化的对象 所以传统的DAO不能做成单实例的 每次要用时都必须new一个新的实例 传统的Service由于将有状态的DAO作为成员变量 所以传统的Service本身也是有状态的

  但是在Spring中 DAO和Service都以单实例的方式存在 Spring是通过ThreadLocal将有状态的变量(如Connection等)本地线程化 达到另一个层面上的 线程无关 从而实现线程安全 Spring不遗余力地将状态化的对象无状态化 就是要达到单实例化Bean的目的 由于Spring已经通过ThreadLocal的设施将Bean无状态化 所以Spring中单实例Bean对线程安全问题拥有了一种天生的免疫能力 不但单实例的Service可以成功运行于多线程环境中 Service本身还可以自由地启动独立线程以执行其它的Service 下面 通过一个实例对此进行描述

  清单 UserService java在事务方法中启动独立线程运行另一个事务方法

   @Service( userService )

   publicclassUserServiceextendsBaseService{

   @Autowired

   privateJdbcTemplatejdbcTemplate;

  

   @Autowired

   privateScoreServicescoreService;

   //①在logon方法体中启动一个独立的线程 在该独立的线程中执行ScoreService#addScore()方法

   publicvoidlogon(StringuserName){

   System out println( logonmethod );

   updateLastLogonTime(userName);

   ThreadmyThread=newMyThread(this scoreService userName );

   myThread start();

   }

  

   publicvoidupdateLastLogonTime(StringuserName){

   System out println( updateLastLogonTime );

   Stringsql= UPDATEt_useruSETu last_logon_time=?WHEREuser_name=? ;

   jdbcTemplate update(sql System currentTimeMillis() userName);

   }

   //②封装ScoreService#addScore()的线程

   privateclassMyThreadextendsThread{

   privateScoreServicescoreService;

   privateStringuserName;

   privateinttoAdd;

   privateMyThread(ScoreServicescoreService StringuserName inttoAdd){

   this scoreService=scoreService;

   this userName=userName;

   this toAdd=toAdd;

   }

   publicvoidrun(){

   scoreService addScore(userName toAdd);

   }

   }

   }

  将日志级别设置为DEBUG 执行UserService#logon()方法 观察以下输出的日志

  清单 执行日志

   (AbstractPlatformTransactionManager java: ) Creatingnewtransactionwithname

   :PROPAGATION_REQUIRED ISOLATION_DEFAULT①

  

   (DataSourceTransactionManager java: ) AcquiredConnection

   forJDBCtransaction

  

   logonmethod

  

   updateLastLogonTime

  

   (JdbcTemplate java: ) ExecutingpreparedSQLupdate

   (JdbcTemplate java: ) ExecutingpreparedSQLstatement

  

   (JdbcTemplate java: ) SQLupdateaffected rows

   (AbstractPlatformTransactionManager java: ) Initiatingtransactionmit

  

   (AbstractPlatformTransactionManager java: )

   Creatingnewtransactionwithname:

   PROPAGATION_REQUIRED ISOLATION_DEFAULT②

   (DataSourceTransactionManager java: ) CommittingJDBCtransaction

   onConnection③

  

   (DataSourceTransactionManager java: ) ReleasingJDBCConnection

   aftertransaction

   (DataSourceUtils java: ) ReturningJDBCConnectiontoDataSource

  

   (DataSourceTransactionManager java: ) AcquiredConnection

   forJDBCtransaction

  

   addScore

  

   (JdbcTemplate java: ) ExecutingSQLstatement

  

   (DataSourceUtils java: ) FetchingJDBCConnectionfromDataSource

   (JdbcTemplate java: ) ExecutingpreparedSQLupdate

   (JdbcTemplate java: ) ExecutingpreparedSQLstatement

  

   (DataSourceUtils java: ) ReturningJDBCConnectiontoDataSource

   (JdbcTemplate java: ) SQLupdateaffected rows

   (AbstractPlatformTransactionManager java: ) Initiatingtransactionmit

   (DataSourceTransactionManager java: ) CommittingJDBCtransaction

   onConnection④

   (DataSourceTransactionManager java: ) ReleasingJDBCConnection

   aftertransaction

  在①处 在主线程(main)执行的UserService#logon()方法的事务启动 在③处 其对应的事务提交 而在子线程(Thread )执行的ScoreService#addScore()方法的事务在②处启动 在④处对应的事务提交

  所以 我们可以得出这样的结论 在相同线程中进行相互嵌套调用的事务方法工作于相同的事务中 如果这些相互嵌套调用的方法工作在不同的线程中 不同线程下的事务方法工作在独立的事务中

   小结

  Spring声明式事务是Spring最核心 最常用的功能 由于Spring通过IOC和AOP的功能非常透明地实现了声明式事务的功能 一般的开发者基本上无须了解Spring声明式事务的内部细节 仅需要懂得如何配置就可以了

  但是在实际应用开发过程中 Spring的这种透明的高阶封装在带来便利的同时 也给我们带来了迷惑 就像通过流言传播的消息 最终听众已经不清楚事情的真相了 而这对于应用开发来说是很危险的 本系列文章通过剖析实际应用中给开发者造成迷惑的各种难点 通过分析Spring事务管理的内部运作机制将真相还原出来 在本文中 我们通过剖析了解到以下的真相

  ◆在没有事务管理的情况下 DAO照样可以顺利进行数据操作

  ◆将应用分成Web Service及DAO层只是一种参考的开发模式 并非是事务管理工作的前提条件

  ◆Spring通过事务传播机制可以很好地应对事务方法嵌套调用的情况 开发者无须为了事务管理而刻意改变服务方法的设计

  ◆由于单实例的对象不存在线程安全问题 所以进行事务管理增强的Bean可以很好地工作在多线程环境下

  ◆混合使用多种数据访问技术(如SpringJDBC+Hibernate)的事务管理问题

lishixinzhi/Article/program/Java/ky/201311/27939

求解决java中用jdbc方式连接mysql数据库的问题,错误异常如下:(解决后再加分)

你这个语句什么都没做,报这个异常是不是数据库连接超时了啊。还有你追问的图不是MYSQL貌似是SQL server 。想用MYSQL建议你下载并安装MYSQL

eclipse连接sql2008连接不上

两个可能的原因:1、密码错误2、没有开启sa账户,估计是安装数据库的时候没有选择windows身份验证/SQL Server身份验证,解决方法就是授权,具体操作上网查,多的很 个人猜测你是后者

为什么JDBC连接sql server连接老是失败呢,快死了啊啊啊,求大神,我什么方法都用过了,默认是Window登录

账号密码都忘了的情况下,你可以这样做:先用windows登录进数据库,在安全性文件夹下有一项登录名找到sa,打开sa的属性,在密码框中输入新的密码,在状态选项卡中,登录项设为启用

再打开服务器的属性,在安全性选项卡中服务器身份验证选择sql server 和windows身份验证模式

重启服务之后再使用sql server验证模式重新登录数据库。

另外,你的这段代码中的sql语句最好不要用 * 换成具体的字段名,不要怕麻烦,因为你下面要用getString(),这里面的1234其实具体是对应着SQL语句中的字段名的。要确保你的数据库驱动是没有问题的。

希望能帮到你!

java 启动jdbc 事务报错 嵌套异常

这个……“Could not get JDBC Connection”和“Cannot load JDBC driver class”,很明显是找不到驱动器类。一般是因为服务器下没有相应jar,不过看那一堆乱码……有可能是解码格式的问题(没遇到过),而且是用spring加载的(?),多半是解码问题,把类名加密了。

fetching jdbc connection from(Spring事务管理高级应用难点剖析(4))

本文编辑:admin

本文相关文章:


fetching jdbc connection from(求解决java中用jdbc方式连接mysql数据库的问题,错误异常如下:(解决后再加分))

fetching jdbc connection from(求解决java中用jdbc方式连接mysql数据库的问题,错误异常如下:(解决后再加分))

本文目录求解决java中用jdbc方式连接mysql数据库的问题,错误异常如下:(解决后再加分)eclipse连接sql2008连接不上Spring事务管理高级应用难点剖析(4)为什么JDBC连接sql server连接老是失败呢,快死了啊

2024年5月18日 06:44

更多文章:


类似魔兽世界的手游有哪些(类似《魔兽世界》的手游有哪些)

类似魔兽世界的手游有哪些(类似《魔兽世界》的手游有哪些)

今天给各位分享类似《魔兽世界》的手游有哪些的知识,其中也会对类似《魔兽世界》的手游有哪些进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录类似《魔兽世界》的手游有哪些求类似于魔兽世界的手游类似魔兽的手游类似魔兽的

2024年6月14日 02:23

悟饭游戏厅官方下载(悟饭游戏哪来的)

悟饭游戏厅官方下载(悟饭游戏哪来的)

本篇文章给大家谈谈悟饭游戏厅官方下载,以及悟饭游戏哪来的对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录悟饭游戏哪来的pc端悟饭游戏厅官网没

2024年6月17日 02:18

推荐几款恋爱养成单机游戏?恋爱养成手游有哪些好推荐

推荐几款恋爱养成单机游戏?恋爱养成手游有哪些好推荐

今天给各位分享推荐几款恋爱养成单机游戏的知识,其中也会对推荐几款恋爱养成单机游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录推荐几款恋爱养成单机游戏恋爱养成手游有哪些好推荐好玩的恋爱养成类游戏恋爱养成类游戏

2024年7月29日 07:40

风行电影下载速度很慢甚至下载速度为0怎么办?下载风行为什么会有这么多快捷方式

风行电影下载速度很慢甚至下载速度为0怎么办?下载风行为什么会有这么多快捷方式

本文目录风行电影下载速度很慢甚至下载速度为0怎么办下载风行为什么会有这么多快捷方式为什么我下载了风行安装不起我已经将风行网络电视下载好了,我想看综艺节目的电视直播,但是发现不能看电视直播为什么高分100.在风行网下载电视总是OB什么原因请问

2024年7月21日 18:59

win10如何设置自动关机时间(win10怎么设置电脑自动关机时间)

win10如何设置自动关机时间(win10怎么设置电脑自动关机时间)

大家好,win10如何设置自动关机时间相信很多的网友都不是很明白,包括win10怎么设置电脑自动关机时间也是一样,不过没有关系,接下来就来为大家分享关于win10如何设置自动关机时间和win10怎么设置电脑自动关机时间的一些知识点,大家可以

2024年6月24日 13:39

word文档软件下载(如何下载word文档软件)

word文档软件下载(如何下载word文档软件)

本文目录如何下载word文档软件怎样在电脑下载word文档软件word怎么下载到电脑上如何下载word文档软件在电脑上点开浏览器,随便一个搜索引擎,填写wps最新版下载,出现结果点击进去,找到下载地址下载即可。安卓手机下载任何App都可以在

2024年6月30日 18:28

杭州派尔玻璃优化排版软件使用说明书?玻璃优化软件哪个最好用

杭州派尔玻璃优化排版软件使用说明书?玻璃优化软件哪个最好用

本文目录杭州派尔玻璃优化排版软件使用说明书玻璃优化软件哪个最好用贵友玻璃优化软件怎么样一个剪刀标志是什么玻璃排版软件江河玻璃幕墙实用什么软件玻璃切割优化软件哪款比较好玻璃设计方面有什么软件吗有人吗求推软件能打印玻璃标签,有哪些怎么用摄影修图

2024年7月24日 01:07

侠盗飞车5中文版(侠盗飞车5是否帮迈克的家人)

侠盗飞车5中文版(侠盗飞车5是否帮迈克的家人)

本文目录侠盗飞车5是否帮迈克的家人侠盗飞车5在哪下载!!侠盗飞车5圣安地列斯在哪下载侠盗猎车手5在哪可以免费下载侠盗飞车5是否帮迈克的家人侠盗飞车5帮迈克的家人侠盗飞车5中文版是知名动作冒险游戏侠盗飞车系列第五部,侠盗飞车系列历来都是以黑帮

2023年7月26日 09:20

三角洲8终极目标(三角洲特种部队:终极目标秘籍)

三角洲8终极目标(三角洲特种部队:终极目标秘籍)

本文目录三角洲特种部队:终极目标秘籍三角洲8终极目标的介绍三角洲特种部队终极目标是7还是8三角洲特种部队7和8的问题 (终极目标和终极目标2)三角洲8终极目标的游戏秘籍浩方上的三角洲特种部队8终极目标是哪版的,有中文版的吗三角洲特种部队8的

2024年5月3日 07:56

轩辕传奇药师弑神技能(轩辕传奇手游弑神有什么用 弑神攻击提升方法解说)

轩辕传奇药师弑神技能(轩辕传奇手游弑神有什么用 弑神攻击提升方法解说)

本文目录轩辕传奇手游弑神有什么用 弑神攻击提升方法解说轩辕传奇药师技能搭配,以及要用什么器灵轩辕传奇弑神技能领悟怎么做,要放法宝可是不知道怎么放求解···轩辕传奇药师紫色杀神技能书轩辕传奇手游弑神有什么用 弑神攻击提升方法解说【弑神介绍】1

2024年7月3日 19:06

vmware workstation 10 0(vmware workstation10 怎样用u盘启动)

vmware workstation 10 0(vmware workstation10 怎样用u盘启动)

本文目录vmware workstation10 怎样用u盘启动求VMware Workstation10下载地址vmware workstation 10怎么设置中文vmware workstation10的许可证密钥如何在VMware

2024年7月19日 03:13

腾讯邮箱登录(腾讯企业邮箱怎么登录)

腾讯邮箱登录(腾讯企业邮箱怎么登录)

本文目录腾讯企业邮箱怎么登录什么登录腾讯企业邮箱腾讯视频怎么登录邮箱腾讯企业邮箱怎么登录企业邮箱怎么扫码登录腾讯企业邮箱登录腾讯企业邮箱怎么登录你好,要登录腾讯企业邮箱,最常用的方式是直接登录官网,然后输入你完整的邮件地址,及对应的密码即可

2024年6月21日 10:58

无人深空 中文(无人深空怎么切换简体中文 简繁体中文切换方法)

无人深空 中文(无人深空怎么切换简体中文 简繁体中文切换方法)

本文目录无人深空怎么切换简体中文 简繁体中文切换方法无人深空怎么换成中文 中文设置方法一览无人深空GOG版怎么设置中文 GOG版设置中文方法《无人深空》怎么切换简繁体中文无人深空怎么切换简体中文 简繁体中文切换方法无人深空中很多时候一些小伙

2024年7月12日 18:49

cad2012激活教程图解(2012版cad怎样激活,要注册机是什么意思)

cad2012激活教程图解(2012版cad怎样激活,要注册机是什么意思)

大家好,今天小编来为大家解答以下的问题,关于cad2012激活教程图解,2012版cad怎样激活,要注册机是什么意思这个很多人还不知道,现在让我们一起来看看吧!本文目录2012版cad怎样激活,要注册机是什么意思cad2012 哪里看 是否

2024年8月25日 14:45

word菜单栏不见了(word菜单栏不见了怎么调出来)

word菜单栏不见了(word菜单栏不见了怎么调出来)

本文目录word菜单栏不见了怎么调出来word 文档的菜单栏不见了是怎么回事呢要怎样恢复word开始功能菜单栏不见了怎么办word菜单栏不见了 如何恢复word开始栏全没了怎么办word不显示菜单栏word所有工具栏菜单栏全没了word文档

2023年11月18日 07:20

dota2单机教程(dota2新手教程bug)

dota2单机教程(dota2新手教程bug)

本文目录dota2新手教程bug问一下dota单机能玩吗dota2怎么挑战openaidota2新手教程bug你可以试试这些操作:1.打开STEAM,在steam游戏库中找到\“dota2\“的图标,在图标上点右键-属性-设置启动选项2.点

2024年6月5日 04:02

有哪些值得推荐的模拟经营类游戏?求很久以前玩过的一款建设游乐园的单机游戏~

有哪些值得推荐的模拟经营类游戏?求很久以前玩过的一款建设游乐园的单机游戏~

本文目录有哪些值得推荐的模拟经营类游戏求很久以前玩过的一款建设游乐园的单机游戏~给我一个好玩的游戏一个在岛屿上的单机游戏,叫什么游乐园单机游戏小时候玩过一款关于造游乐场的游戏,名字想不起来了一款老的单机游戏,3D视角,自己建设游乐园的,还能

2024年5月5日 03:23

有什么工具能把英语快速翻译成汉语的工具吗?有没有什么软件可以快速将英文短文翻译成中文

有什么工具能把英语快速翻译成汉语的工具吗?有没有什么软件可以快速将英文短文翻译成中文

本文目录有什么工具能把英语快速翻译成汉语的工具吗有没有什么软件可以快速将英文短文翻译成中文快速翻译文言文的十个方法有什么方法快速翻译英语快速的的英语翻译 快速的用英语怎么说怎样快速翻译大量文献资料有什么工具能把英语快速翻译成汉语的工具吗手机

2024年7月24日 04:05

233小游戏免费安装(233乐园不要身份证怎么下载)

233小游戏免费安装(233乐园不要身份证怎么下载)

其实233小游戏免费安装的问题并不复杂,但是又很多的朋友都不太了解233乐园不要身份证怎么下载,因此呢,今天小编就来为大家分享233小游戏免费安装的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录233乐园不要身份

2024年7月3日 13:40

中原证券最新版本(中原证券60日线怎么设置)

中原证券最新版本(中原证券60日线怎么设置)

本篇文章给大家谈谈中原证券最新版本,以及中原证券60日线怎么设置对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录中原证券60日线怎么设置中原

2024年7月16日 04:06

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1735
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索