JDBC 4.0鲜为人知的Clob.free()和Blob.free()方法
在會議上談論jOOQ時,我總是展示此幻燈片,其中包含許多人們經常犯的非常常見的JDBC錯誤:
此圖中的六個常見的JDBC錯誤
您可以找到錯誤嗎? 其中一些是顯而易見的,例如:
- 第4行:由于第3行的連接不正確而導致的語法錯誤
- 第7行:由于變量內聯導致的語法錯誤和SQL注入風險
- 第8行:由于第3行潛在的不匹配而導致的綁定索引錯誤
- 第14行:由于草率的重命名而導致了錯誤的列名
- 第18行:不良的資源管理
但是,還有另一個非常細微的錯誤,大多數人沒有意識到,因為該修復僅在Java 6 / JDBC 4.0升級之后才可能進行。 請參閱下面的解決方案:
解決前六個錯誤
- 第15行:不調用Clob.free()
在JDBC 4.0中, Clob.free()了Clob.free()和Blob.free()方法。 盡管調用它們是可選的,但最好不要盡早調用它們,因為您不應該依賴垃圾收集器來盡早釋放這些資源,這可能是一個非常糟糕的主意。 實際上,在某些數據庫/ JDBC驅動程序中,LOB可能會超出單個語句和/或事務的壽命。 他們是自己的野獸。 如果您正在閱讀JDBC教程 (以及JDBC規范中的內容 ),則會顯示:
Blob,Clob和NClob Java對象至少在創建它們的事務期間保持有效。 在長時間運行的事務中,這可能導致應用程序資源不足。
對于數組也是如此,自Java 6 / JDBC 4.0開始,數組也具有Array.free()方法。
因此,如果您的應用程序具有長期運行的事務,請調用這些free()方法,或者養成始終調用它們的習慣。 我們將向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
總結
以上是生活随笔為你收集整理的JDBC 4.0鲜为人知的Clob.free()和Blob.free()方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (if -z linux)
- 下一篇: win装Linux(win 装linux