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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反沙箱——SetErrorMode

目录 1.前言 2.原理讲解 3.代码实现 4.参考 1.前言 利用SetErrorMode进行反沙箱的技术,在2010年就有被提出,但是之前搜了很久都没有相关内容,这里简单的说一下这个反沙箱的实现。反沙箱参考GandCrab5.2。 2.原理讲解 首先讲一下SetErrorMode这…

使用MyBatis和Spring构建Java Web应用程序

这篇文章将展示如何在Spring环境中使用带有MyBatis框架的MYSQL DB创建学生注册应用程序。 这是一个简单的应用程序,旨在在注册期间从用户收集输入详细信息,将详细信息保存在MYSQL DB中,并在登录期间对它们进行身份验证。 1.使用Maven模板创建…

codeforces 1136E-Nastya Hasn't Written a Legend

传送门:QAQQAQ 题意:有一个数组a和一个数组k,数组a一直保持一个性质:a[i 1] > a[i] k[i]。有两种操作:1,给某个元素加上x,但是加上之后要保持数组a的性质。比如a[i]加上x之后,a…

将Spring MVC RESTful Web服务迁移到Spring 4

1引言 Spring 4为MVC应用程序带来了一些改进 。 在这篇文章中,我将重点介绍宁静的Web服务,并通过采用Spring 3.2实现的项目并将其升级到Spring 4来尝试这些改进。以下几点总结了本文的内容: 从Spring 3.2迁移到Spring 4.0 变化中的Response…

java scrollpane 设置透明_java swing 之 JScrollPane(滚动面板)的使用

/*** java swing 之JScrollPane面板* 在设置界面时,可能会遇到在一个较小的容器窗体中显示一个较大部分的内容,这时可以使用* JScrollPane面板,JscrollPane面板是带滚动条的面板,也是一种容器,但是常用于布置单个* 控件…

软件工程(2019)第三次个人作业

目录 软件工程第三次作业问题描述分析并设计程序程序流程图选择覆盖标准并设计测试样例软件工程第三次作业 项目地址 问题描述 题目(1):最大连续子数组和(最大子段和) 背景 问题: 给定n个整数(可能为负数)组…

Flutter - 创建侧滑菜单

侧滑菜单在安卓App里面非常常见,比如Gmail,Google Play,Twitter等。看下图 网上也有很多创建侧滑菜单的教程,我也来记录一下,自己学习创建Drawer的过程。 1. 创建一个空的App import package:flutter/material.dart;cl…

java框架白话_Java NIO框架Netty教程(二) 白话概念

"Hello World"的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩展。声明,笔者一介码农,不会那么多专业的词汇和缩写,只…

luogu4770 [NOI2018]你的名字 后缀自动机 + 线段树合并

其实很水的一道题吧.... 题意是:每次给定一个串\(T\)以及\(l, r\),询问有多少个字符串\(s\)满足,\(s\)是\(T\)的子串,但不是\(S[l .. r]\)的子串 统计\(T\)本质不同的串,建个后缀自动机 然后自然的可以想到&#xff0c…

团队计划会议

跟航哥想了挺多要做什么,要完成什么,以什么为主要功能 提出了几个想法,并做了投票 最后决定一起做一个跑腿软件 最初的任务量: 跟航哥商量两个人一人负责两个模块 航哥负责管理员和下单 我负责接单跟其他琐碎的小功能 呐&#xff…

vue.js java php_准吗?Java程序员喜欢AngularJS,PHP程序员喜欢Vue.js!

编程语言与框架或者库之间有联系是很正常的事情,如果我们告诉你,使用某一种编程语言或技术的开发人员可能更喜欢某个框架,你会作何反应呢?Stack Overflow根据网站内最常访问的标签将开发人员分为多个组,并检查了每组每…

结构化日志:出错时你最想要的好朋友

目录 介绍什么是日志?Grab中日志的状况为什么改变?结构化日志支持不同格式的多写开发中类似生产环境的日志因果顺序但为什么要结构化记日志?原文:Structured Logging: The Best Friend You’ll Want When Things Go Wrong 介绍 在…

在vue项目中添加特殊字体

这里的特殊字体,指的是一般用户电脑未安装到本地的字体,要引入这样的字体,首先需要把字体文件下载下来。 就像上图这样的,ttf格式的,然后在项目里添加它。 然后我们在font.css里用font-face规则引入这个字体文件并命名…

使用Spring WS创建合同优先的Web服务

1引言 本文介绍了如何使用来实现和测试SOAP Web服务 Spring Web Services项目 。 本示例使用JAXB2进行(取消)编组。 为了开发服务,我将使用合同优先的方法,该方法首先定义服务合同,然后基于该合同实施服务。 本文分为…

转载 Net多线程编程—System.Threading.Tasks.Parallel

.Net多线程编程—System.Threading.Tasks.Parallel System.Threading.Tasks.Parallel类提供了Parallel.Invoke,Parallel.For,Parallel.ForEach这三个静态方法。 1 Parallel.Invoke 尽可能并行执行所提供的每个操作,除非用户取消了操作。 方法…

Fiddler教程--简介

1、开发环境host配置自己修改系统的host来回挺麻烦的 2、前后的接口调试 3、线上bugfix 4、性能分析和优化 5.等等... 工作原理 一个代理服务器地址改为 127.0.0.1:8888流模式边走边返回缓冲模式http请求完成所有的数据之后,才返回 界面功能介绍 1.工具栏 从下图红色…

跟面向对象卯上了,看看ES6的“类”

上回我们说到ES5的面向对象,以及被大家公认的最佳的寄生组合式继承。时代在进步,在ES6中对于面向对象这个大boss理所应当地进行了一次大改,从原先那种比较长的写法转变为“小清新”写法。我们一起来看一下。 在ES6中是有类这个概念&#xff0…

Java 8中的5个功能将改变您的编码方式

Java 8在JVM和语言级别都包含了一些非常令人兴奋的功能。 虽然最初为该发行版设想的某些功能已扩大范围或已推出到第9版,但实际上有数十个新功能。 许多新添加的内容在编译器,JVM或帮助系统级别都进行了后台改进。 这样,虽然我们可能会从中受…

Java相关资料分享(视频+电子书籍)

关注微信公众号【Java典籍】,获取百度网盘提取码 ▼微信扫一扫下图↓↓↓二维码关注 转载于:https://www.cnblogs.com/bingyimeiling/p/10279049.html

vue项目 一行js代码搞定点击图片放大缩小

一行js代码搞定xue项目需要点击图片放大缩小,其实主要用的是用到了vue:class的动态切换,内容比较简单。一开始我把维护的需求想得太复杂了,和测试小姐姐聊了一下才反应过来。 两个月不到跟了四个项目,现在是维护改bug阶段&#x…