关于Java Database Connectivity您不知道的5件事:晋升您和JDBC[Java编程]
本文“关于Java Database Connectivity您不知道的5件事:晋升您和JDBC[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
关于Java Database Connectivity您不知道的5件事:晋升您和JDBC API的关系
目前,很多开辟人员把 Java Database Connectivity (JDBC) API 当作一种数据拜候平台,比方 Hibernate 或 SpringMany.但是 JDBC 在数据库衔接中不但仅充当后台角色.关于 JDBC,您理解的越多,您的 RDBMS 交互效率就越高.
在本期 5 件事 系列 中,我将向您介绍几种 JDBC 2.0 到 JDBC 4.0 中新引入的功效.计划时考虑到现代软件开辟所面对的挑衅,这些新特点支持利用程序可伸缩性,并提高开辟人员的工作效率 — 这是现代 Java 开辟人员面对的两个最常见的挑衅.
1. 标量函数
差别的 RDBMS 实现对 SQL 和/或增值特点(目的是让程序员的工作更为简单)供应不法则的支持.比方,众所周知,SQL 支持一个标量运算 COUNT(),返回满意特定 SQL 过滤法则的行数(更切当地说,是 WHERE 谓词).除此之外,改正 SQL 返回的值是很棘手的 — 想要从数据库获得当前日期和时间会使 JDBC 开辟人员、乃至最有耐烦的程序员发狂(乃至是心力憔悴).
于是,JDBC 标准针对差别的 RDBMS 实现通过标量函数供应一定程度的断绝/改写.JDBC 标准包含一系列受支持的操作,JDBC 驱动程序应当按照特定数据库实现的需求举行辨认和改写.因此,关于一个支持返回当前日期和/或时间的数据库,时间查询该当如清单 1 那样简单:
清单 1. 当前时间?
Connection conn = ...; // get it from someplace
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("{CURRENT_DATE()}");
JDBC API 辨认的标量函数完好列表在 JDBC 标准附录中给出,但是给定的驱动程序或数据库大概不支持完好列表.您可以利用从 Connection 返回的 DatabaseMetaData 对象来获得给定 JDBC 支持的函数,如清单 2 所示:
清单 2. 能为我供应什么?
Connection conn = ...; // get it from someplace
DatabaseMetaData dbmd = conn.getMetaData();
标量函数列表是从各种 DatabaseMetaData 办法返回的一个逗号脱离的 String.比方,全部数值标量由 getNumericFunctions() 调用列出,在后果上履行一个 String.split() — 瞧! — 即刻呈现 equals()-testable 列表.
2. 可转动 ResultSets
成立一个 Connection 对象,并用它来成立一个 Statement,这在 JDBC 中是最常用的.供应应 SQL SELECT 的 Statement 返回一个 ResultSet.然后,通过一个 while 循环(和 Iterator 没什么差别)得到 ResultSet,直到 ResultSet 为空,循环体从左到右的每次提取一列.
这整个操作历程是如此广泛,近乎神圣:它这样做只是因为它应当这样做.唉!实际上这是完好没必要的.
引入可转动 ResultSet
很多开辟人员没有意识到,在过去的几年中 JBDC 已经有了相当大的加强,固然这些加强在新版本中已经有所反映. 第一次庞大加强是在 JDBC 2.0 中,发生在利用 JDK 1.2 期间.写这篇文章时,JDBC 已经发展到了 JDBC 4.0.
JDBC 2.0 中一个风趣的加强(固然常常被忽视)是 ResultSet 的转动功效,这意味着您可以按照需求行进大概撤退,大概二者都可.这样做需求一点前瞻性,但是 — JDBC 调用必须指出在成立 Statement 时需求一个可以转动的 ResultSet.
以上是“关于Java Database Connectivity您不知道的5件事:晋升您和JDBC[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |