在会议上谈论jOOQ时,我总是展示此幻灯片,其中包含许多人们经常犯的非常常见的JDBC错误:










JDBC 4.0鲜为人知的Clob.free()和Blob.free()方法

此图中的六个常见的JDBC错误

您可以找到错误吗? 其中一些是显而易见的,例如:

  • 第4行:由于第3行的连接不正确而导致的语法错误
  • 第7行:由于变量内联导致的语法错误和SQL注入风险
  • 第8行:由于第3行潜在的不匹配而导致的绑定索引错误
  • 第14行:由于草率的重命名而导致了错误的列名
  • 第18行:不良的资源管理

但是,还有另一个非常细微的错误,大多数人没有意识到,因为该修复仅在Java 6 / JDBC 4.0升级之后才可能进行。 请参阅下面的解决方案:

JDBC 4.0鲜为人知的Clob.free()和Blob.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提交问题,以使其成为潜在的错误模式

翻译自: https://www.javacodegeeks.com/2014/02/jdbc-4-0s-lesser-known-clob-free-and-blob-free-methods.html

相关文章:

  • 2021-04-20
  • 2021-09-07
  • 2021-09-12
  • 2022-12-23
  • 2021-12-04
  • 2022-01-22
猜你喜欢
  • 2022-12-23
  • 2022-01-11
  • 2021-12-02
  • 2021-07-10
  • 2022-02-05
  • 2022-02-21
相关资源
相似解决方案