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

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

错误

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

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

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

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

解

解决前六个错误

在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值