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/m.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燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP