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提交问题,以使其成为潜在的错误模式 。
翻译自: 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()方法相关推荐
- JDBC 2.0中的高级数据类型
JDBC 2.0中提供了对SQL3标准中引入的新的数据类型,如Blob(binary large object).Clob(character large object).Array 对象.REF(对 ...
- Java SE 6 新特性: Java DB 和 JDBC 4.0
http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...
- java sql2016驱动_微软发布用于SQL Server 的JDBC 6.0驱动下载 - IT之家
IT之家讯 微软发布了用于SQL Server数据库的JDBC 6.0驱动下载,该版本为基于Java的SQL Server和Azure SQL数据库提供强大的数据访问性能,相关用户可下载安装(仅英文版 ...
- clob类型用java怎么存,Java 储存和读取 oracle CLOB 类型字段的实用方法
当前位置:我的异常网» 编程 » Java 储存和读取 oracle CLOB 类型字段的实用方法 Java 储存和读取 oracle CLOB 类型字段的实用方法 www.myexceptions. ...
- JDBC详解(四):操作BLOB类型字段(超详解)
JDBC详解(四):操作BLOB类型字段 前言 一.MySQL BLOB类型 二.向数据表中插入大数据类型 三.修改数据表中的Blob类型字段 四.从数据表中读取大数据类型 前言 本博主将用CSDN记 ...
- android添加截图功能,Android应用开发之Android 5.0及以上编程实现屏幕截图功能的方法...
本文将带你了解Android应用开发Android 5.0及以上编程实现屏幕截图功能的方法,希望本文对大家学Android有所帮助. 本文实例讲述了Android 5.0及以上编程实现屏幕截图功能 ...
- weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB cannot be cast to oracle.sql.BLOB 解决方法
weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB cannot be cast to oracle.sql.BLOB 解决方法 参考文章: (1)weblogic. ...
- Redis 5.0.3默认配置启动报错解决方法
Redis 5.0.3默认配置启动报错解决方法 参考文章: (1)Redis 5.0.3默认配置启动报错解决方法 (2)https://www.cnblogs.com/miclesvic/p/1031 ...
- Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
Android studio3.0打开Device File Explore(文件管理器)的方法 看到网上AS3.0新增加的查看手机文件的新功能,全部都是转载的,没有几个人心细的把如何打开的方法写下来 ...
最新文章
- Softmax回归——logistic回归模型在多分类问题上的推广
- Error -26612: HTTP Status-Code=500 (Internal Server Error) ...
- java 动态代理 阿bin_Android WebView 的方法只能在 UI 线程中运行
- 计算机机房t4,机房等级-T2-T3-T4-如何划分
- loop 伪设备 挂在文件系统
- Vim winmanager文件浏览自动更新
- ctrl c 失效了_[安卓+PC双端]超C女仆无馬中字
- 3D游戏建模就是那么简单
- 惹恼程序员的10件事
- mysql数据库 integer_MySQL数据库中,常用的数据类型
- Tosca:键盘输入字符串
- 后序遍历二叉树(迭代 vs 递归)
- 25. PHP 文件处理
- php常量的声明和使用
- html5数组循环右移,下面的程序代码实现将一个一维数组中元素向右循环移动 移位次数由文本框Text输入。例如数组各元素...
- 3. mysql的注解驱动的三种方式_注册 Jdbc 驱动程序的三种方式及Class.forName 的作用...
- CCNA(高级实验)
- ubuntu升级显卡驱动
- 越来越多的主板增加了WIFI功能,但是你真能用得到吗?
- 补遗篇之单行道标志const
热门文章
- RPC远程过程调用之Hessian 基于HTTP
- mybatis的$和#详解分析
- neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图
- hazelcast_HazelCast的Spring-Boot和Cache抽象
- java向后兼容吗_Java向后不兼容历史的观察
- jdk8和hotspot_HotSpot的-XshowSettings标志的简单性和价值
- wildfly管理控制台_WildFly管理控制台已更新–请求反馈
- dbunit使用_摆脱困境:在DbUnit数据集中使用空值
- 检查Java测试中发生了什么
- 背包问题九讲_背包问题