1. 引言

JDBC API是一种Java API,可以访问任何类型的表格数据,特别是存储在关系数据库中的数据。

JDBC可以帮助我们编写下列三种编程活动的java应用程序:

  • 1.连接到数据源,如数据库;
  • 2.发送查询和更新语句到数据库;
  • 3.检索并处理从数据库收到的结果以满足我们的查询要求。

以下简单的代码片段给出了以下三个步骤的简单示例:

/**
* A demo of JDBC
* @param username : 数据源的登录名
* @param password : 数据源的密码
*/
public void connectToAndQueryDatabase(String username, String password) { Connection con = DriverManager.getConnection(
"jdbc:myDriver:myDatabase",
username,
password); Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1"); while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
}

这个很短的代码片段十分简单,实例化一个DriverManager对象,以连接到数据库驱动程序并登录到数据库,该语句将sql语句查询的对象实例化到数据库中,实例化一个ResultSet检索查询结果的对象,并执行一个简单的while循环,检索并显示这些结果。

2. JDBC产品组件

JDBC包括四个组件:

    1. JDBC-API - JDBC™API提供对Java™编程语言的关系数据的编程访问。使用JDBC API,应用程序可以执行SQL语句,检索结果,并将更改发送到底层数据源。此外,JDBC API还可以在分布式异构环境中与多个数据源进行交互。JDBC API是Java平台的一部分,它包括Java™标准版(Java™SE)和Java™企业版(Java™EE)。在JDBC 4.0 API分为两个包:java.sql和javax.sql,在Java SE和Java EE平台均包含这两个包。
    1. JDBC驱动程序管理器 - JDBC DriverManager类定义了一个对象,这个对象可以将java应用程序连接到jdbc驱动程序。从传统上来看,DriverManager是整个JDBC体系结构的支柱。DriverManager不仅仅非常的小巧,而且非常简洁。通过javax.naming和javax.sql这两个标准扩展包,我们可以通过 java 命名和目录接口™ (jndi)命名服务来注册对象去建立数据源的连接的方式去使用数据源。实际上,我们可以使用任何的连接机制,但数据源建议尽可能多地使用对象。
    1. JDBC测试套件 - 这些测试也许不是十分的全面和详尽,但是在JDBC API中执行了很多重要的功能。
    1. JDBC-ODBC Bridge - Java软件桥接可以通过ODBC驱动程序提供JDBC访问。但是需要注意的是,我们需要在使用此驱动程序的每台客户端计算机上加载ODBC二进制代码。因此,ODBC驱动程序最适合于客户端安装不是主要问题的公司网络,或者是以三层架构中的Java编写的应用程序服务器代码。

我们可以使用四个JDBC组件中前两个连接到数据库,然后构建一个Java程序,使用SQL命令去联系和测试关系型数据库。最后两个组件是在一个特定的环境中使用,用于测试Web应用或者是与基于ODBC的DBMS(Database Management System)的通信。

3. JDBC架构

3.1 两层和三层处理模型

图1:数据访问的两层架构

在两层模型中,Java Applet或应用程序直接与数据源进行交互。因此我们需要一个JDBC驱动程序,它可以与被访问的指定的数据源通信,能将用户的命令传递给数据库或者其他的数据源,并且将这些命令的执行结果返回给用户,而这个数据源可能是用户通过网络连接的另外一台计算机上,这种配置方式被称为client/server配置方式。在这种配置方式中,用户的计算机作为客户端,而数据源所在的计算机作为服务端,用于通信的网络可以是可以是内联网,例如连接公司内的员工,也可以是互联网。

图2:数据访问的三层架构

在三层模型中,命令被发送到服务的“中间层”,然后将命令发送到数据源,数据源处理命令并将结果发送回中间层,然后将其发送给用户。三层模型具有很多优势,首先中间层可以保持访问的控制和公司数据类型的更新,然后简化了应用程序的部署,最后,在许多情况下,三层架构可以提供性能优势。

3.2 JDBC API支持数据库访问的两层和三层处理模型

直到最近,中间层经常用C或C ++等语言编写,提供快速的性能。然而,随着将Java字节码转换为特定机器的代码和技术(如Enterprise JavaBeans™)的编译器不断得到优化,Java平台凭借Java的强大、多线程和安全等优势正在迅速成为中间层开发的标准平台。

随着越来越多的企业越来越多地使用Java编程语言来编写服务器代码,JDBC API正在三层架构的中间层中越来越多地被使用,其对连接池、分布式事务和断开连接的行集合的支持这使JDBC成为服务器技术。当然,JDBC API也是允许从Java中间层访问数据源的。

4. 声明

本文翻译自oracle官网并做了部分调整以便于理解,更多信息请访问原文

JDBC学习笔记之JDBC简介的更多相关文章

  1. JDBC学习笔记(1)——JDBC概述

    JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数 ...

  2. 【转】JDBC学习笔记(1)——JDBC概述

    转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据 ...

  3. JDBC学习笔记一

    JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...

  4. JDBC 学习笔记(十一)—— JDBC 的事务支持

    1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...

  5. JDBC 学习笔记(十)—— 使用 JDBC 搭建一个简易的 ORM 框架

    1. 数据映射 当我们获取到 ResultSet 之后,显然这个不是我们想要的数据结构. 数据库中的每一个表,在 Java 代码中,一定会有一个类与之对应,例如: package com.gerrar ...

  6. JDBC 学习笔记(六)—— PreparedStatement

    1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...

  7. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

  8. C#.NET学习笔记1---C#.NET简介

    C#.NET学习笔记1---C#.NET简介 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com -------------- ...

  9. Linux学习笔记-Linux系统简介

    Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...

随机推荐

  1. 图文教程 | 开启远程访问mysql数据库权限

     !!!考虑到安全性,不建议使用 所以将指定用户的host改为:% 即可 执行:(以root用户为例) use mysql; update user set host = "%" ...

  2. 海量日志实时收集系统架构设计与go语言实现

    日志收集系统应该说是到达一定规模的公司的标配了,一个能满足业务需求.运维成本低.稳定的日志收集系统对于运维的同学和日志使用方的同学都是非常nice的.然而这时理想中的日志收集系统,现实往往不是这样的. ...

  3. Apache Kafka: 优化部署的10个最佳实践

    原文作者:Ben Bromhead      译者:江玮 原文地址:https://www.infoq.com/articles/apache-kafka-best-practices-to-opti ...

  4. jqgrid表头上面再加一行---二级表头

    实现效果如图,代码如下: $( "#table_list_1" ).jqGrid( 'setGroupHeaders' , { useColSpanStyle : true , / ...

  5. eclipse4.6.1安装SpringSource Tool Suite(sts-eclipse)插件

    1. Spring Tool Suite(sts)简介 Spring Tool Suite(sts)就是一个基于Eclipse的开发环境, 用于开发Spring应用程序.它提供了一个现成的使用环境来实 ...

  6. C#实现微信AES-128-CBC加密数据的解密

    小程序登录时,获得用户的信息,只是昵称,无法用作ID.而有用的数据,都加密着,腾讯给出了解密的方法: 加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和un ...

  7. cannot import name 'Flask' from 'flask'

    今天发现了智障的真我. 刚入门flask,建了一个文件命名叫flask.py 在virtualenv的容器里运行该py文件,报错cannot import name 'Flask' from 'fla ...

  8. 6.分析request_irq和free_irq函数如何注册注销中断(详解)

    上一节讲了如何实现运行中断,这些都是系统给做好的,当我们想自己写个中断处理程序,去执行自己的代码,就需要写irq_desc->action->handler,然后通过request_irq ...

  9. Java学习笔记之——变量与数据类型、运算符

    一.变量 1.变量:变化的值 变量在代码运行期间,开辟了一块空间 .这块空间是有地址的,给这块取了个名字, 这个名字就叫做变量名,这块空间放的东西叫做变量值 2.变量的初始化: (1)先声明再赋值: ...

  10. 【23】备忘录模式(Memento Pattern)

    一.引言 在上一篇博文分享了访问者模式,访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离.而今天要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起 ...