java 板


LINE

各位JAVA前辈好 先描述一下目前状况 -- 架构: Web application使用Spring框架 而Spring JDBC的Datasource有使用connection pool -- 需求: DB已经有一个table 该table是空的 是一个temp table 但我不知道这种规则叫做什麽 以下简单举个例子 EX:当有一个connection对该table insert 100笔 connection还没断的时候里面资料都存在 等到该connection断了 table即会自动清空 而我要使用Spring JDBC 对其进行操作 -- 现况: 因为Spring JDBC中的jdbctemplate会帮我们管理connection 但是我需要使用特定单一的connection 一口气做完所有动作 做完之後将该connection给close 使table自动清空 目前的想法是: //取得单一连线? Connection con = jdbctemplate.getdatasource().getconnection(); //做完所有动作 //关闭此连线 让table自动清空 con.close(); 问题: 1.请问若像上面的作法是否就可以达成控制单一connection的需求呢? 2.因为底层是connection pool 是否会造成其他影响? 或者...事情根本不是我想的这样 恳请各位前辈不吝指教 谢谢! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.24.60.237
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1457438870.A.025.html
1F:→ ssccg: temp table是在commit的时候清空,跟connection无关 03/08 20:41
2F:→ ssccg: 你需要的是Transaction 03/08 20:42
3F:→ ssccg: 没有用transaction时JdbcTemplate每个动作会auto commit 03/08 20:45
抱歉我补充一下 我要insert资料至temp table A 此时会commit 然後再和table B 作join 取出需要的资料 然後A就不需要再用了 当该Connection断了後 A自动清空 这是DB作的 同一个Connection连线&中断 都是DB判断的 谢谢一楼提供的意见! ※ 编辑: aegis105 (114.24.60.237), 03/08/2016 20:56:19
4F:→ ssccg: 忘了问哪种DB,因为你说的像oracle的所以上面是说oracle的 03/08 21:13
5F:→ ssccg: 你table A资料作完就不用了,那为什麽要commit? 03/08 21:13
是oracle没错 因为资料笔数非常大量 temp table A的机制是DBA建议&设计的 先将大量资料commit到A 之後和B(资料笔数更多)join 得出结果 不知道是否有回答到您的问题 或是其实有更好作法呢 ※ 编辑: aegis105 (114.24.60.237), 03/08/2016 21:29:36 ※ 编辑: aegis105 (114.24.60.237), 03/08/2016 21:32:47
6F:→ ssccg: oracle的temp table是在commit(结束transaction时清空) 03/08 21:41
7F:→ ssccg: 所以就是开一个transaction中作完insert、join select 03/08 21:42
8F:→ ssccg: 之後再commit 03/08 21:42
9F:→ ssccg: 我猜你把commit当成insert... 03/08 21:44
疑.. 但我没有搞混commit和insert 使用的方式和ss大说的有点像又不太一样 我今天测试的方式: 用一个connection > insert 1笔资料 > commit > select确实有那一笔 中断connection > 重新开connection > select table是空的 有点混乱啊.. ※ 编辑: aegis105 (114.24.60.237), 03/08/2016 22:19:44
10F:→ yyc1217: 建立connection的成本蛮大的 如果太频繁的确会造成影响 03/08 23:04
11F:→ yyc1217: 这也是为什麽有connection pool 用query清空也许比较好 03/08 23:04
12F:→ yyc1217: 或是每次建立不同的temp表 db再用排程删掉 03/08 23:06
13F:→ adrianshum: Oracle temp table 建立时可指明commit 或connection 03/09 01:10
14F:→ adrianshum: close 时清空。另,因为connection pool 并不会真的c 03/09 01:10
15F:→ adrianshum: lose connection,类似情况下不建议用後者 03/09 01:10
16F:→ ssccg: 我不知道可以设成connection close时清空,不过因为pool的 03/09 02:56
17F:→ ssccg: 关系通常是用commit时清空的用法吧 03/09 02:56
18F:→ ssccg: 如果是connection时清空,在用pool的情况下你只能自己每个 03/09 02:56
19F:→ ssccg: transaction去做trucate了 03/09 02:57
20F:→ ssccg: 只要有用connection pool,上层取到的connection都是wrap过 03/09 02:58
21F:→ ssccg: 的,你close都只是把connection还回pool,不能真的关掉 03/09 02:58
22F:→ ssccg: 可以要求改DB定义的话去换成on commit delete吧 03/09 03:03
23F:推 cug990617: 你可以试着写一个Procedure,把资料送进去後再处理 03/09 13:23
24F:推 j16598231: 试试用batch? 03/09 21:36
25F:推 kiwatami: temp table可以用stored procedure开 执行完就消失了 03/10 12:02
26F:→ kiwatami: 不需要管连线 要做这种一堆处理的写在里面速度会快点 03/10 12:02







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP