木子二月鳥(niǎo)
2016-11-14 13:50:52
程序的目的是訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢操作,使用的是spring和c3p0連接池,spring配置了一個(gè)springContext的靜態(tài)方法可以直接使用getbean來(lái)獲得相應(yīng)對(duì)象,
這里其他代碼略去,只保留問(wèn)題相關(guān)的代碼如下:
??????????//調(diào)用數(shù)據(jù)庫(kù)連接
??????????//JDBCConn?jdbcConn?=?(JDBCConn)?springContext.getBean("JDBCConn");???-----A
????????????JDBCConn?jdbcConn?=?new?JDBCConn();????------B
????????????ResultSet?rs?=?jdbcConn.jdbcconn(sourceid,?sql);想請(qǐng)教大蝦的是:方法A和方法B有什么差別?體現(xiàn)在哪些方面?比如在數(shù)據(jù)庫(kù)連接的時(shí)候A是沿用springContext第一次創(chuàng)建時(shí)的對(duì)象、而B(niǎo)是每次都新建一個(gè)連接?或者A和B獲得的對(duì)象是一樣的嗎?
4 回答

木子二月鳥(niǎo)
TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超0個(gè)贊
也說(shuō)一下自己的理解:通過(guò)調(diào)試代碼,發(fā)現(xiàn)getbean的方式獲得對(duì)象總是繼承于springcontext的上下文信息,在數(shù)據(jù)庫(kù)連接時(shí)如果上一次操作報(bào)錯(cuò),那么getbean方式獲得的對(duì)象在下次操作時(shí)依然報(bào)錯(cuò);如果改為new的方式,則不存在這個(gè)問(wèn)題。
進(jìn)一步推測(cè),可能是和spring的bean生命周期管理有關(guān),默認(rèn)是單例模式,在通過(guò)web方式操作數(shù)據(jù)庫(kù)時(shí)應(yīng)該采用request或者session方式。
以上都是推測(cè),還是希望有大牛能夠出面解惑~
積分還是采納給樓上的同志了,畢竟回答的人不多。。。
添加回答
舉報(bào)
0/150
提交
取消