JDBC 4.0鲜为人知的Clob.free()和Blob.free()方法
在會議上談?wù)搄OOQ時,我總是展示此幻燈片,其中包含許多人們經(jīng)常犯的非常常見的JDBC錯誤:
此圖中的六個常見的JDBC錯誤
您可以找到錯誤嗎? 其中一些是顯而易見的,例如:
- 第4行:由于第3行的連接不正確而導(dǎo)致的語法錯誤
- 第7行:由于變量內(nèi)聯(lián)導(dǎo)致的語法錯誤和SQL注入風險
- 第8行:由于第3行潛在的不匹配而導(dǎo)致的綁定索引錯誤
- 第14行:由于草率的重命名而導(dǎo)致了錯誤的列名
- 第18行:不良的資源管理
但是,還有另一個非常細微的錯誤,大多數(shù)人沒有意識到,因為該修復(fù)僅在Java 6 / JDBC 4.0升級之后才可能進行。 請參閱下面的解決方案:
解決前六個錯誤
- 第15行:不調(diào)用Clob.free()
在JDBC 4.0中, Clob.free()了Clob.free()和Blob.free()方法。 盡管調(diào)用它們是可選的,但最好不要盡早調(diào)用它們,因為您不應(yīng)該依賴垃圾收集器來盡早釋放這些資源,這可能是一個非常糟糕的主意。 實際上,在某些數(shù)據(jù)庫/ JDBC驅(qū)動程序中,LOB可能會超出單個語句和/或事務(wù)的壽命。 他們是自己的野獸。 如果您正在閱讀JDBC教程 (以及JDBC規(guī)范中的內(nèi)容 ),則會顯示:
Blob,Clob和NClob Java對象至少在創(chuàng)建它們的事務(wù)期間保持有效。 在長時間運行的事務(wù)中,這可能導(dǎo)致應(yīng)用程序資源不足。
對于數(shù)組也是如此,自Java 6 / JDBC 4.0開始,數(shù)組也具有Array.free()方法。
因此,如果您的應(yīng)用程序具有長期運行的事務(wù),請調(diào)用這些free()方法,或者養(yǎng)成始終調(diào)用它們的習(xí)慣。 我們將向FindBugs提交問題,以使其成為潛在的錯誤模式 。
參考: JDBC 4.0的鮮為人知的Clob.free()和Blob.free()方法(來自JAVA,SQL和JOOQ博客的JCG合作伙伴 Lukas Eder)。翻譯自: https://www.javacodegeeks.com/2014/02/jdbc-4-0s-lesser-known-clob-free-and-blob-free-methods.html
總結(jié)
以上是生活随笔為你收集整理的JDBC 4.0鲜为人知的Clob.free()和Blob.free()方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (if -z linux)
- 下一篇: win装Linux(win 装linux