本文内容大多基于官方文档和网上前辈经验总结,经过个人实践加以整理积累,仅供参考。
1 Java 中的数据存储技术
(1) 在 Java 中,数据库存取技术可分为如下几类:
● JDBC 直接访问数据库
● JDO 技术
● 第三方 O/R 工具,如 Hibernate,ibatis 等
(2) JDBC 是 Java 访问数据库的基石,JDO,Hibernate 等只是更好地封装了 JDBC
2 JDBC 简介
(1) JDBC – Java Database Connectivity,是一个独立于特定数据库管理系统、通用的 SQL 数据库存取和操作的标准Java应用编程接口,从根本上来说 JDBC 是一种规范
(2) JDBC 为访问不同的数据库提供了统一的途径
(3) JDBC 的目标是使 Java 程序员使用 JDBC 可以连接任何提供了 JDBC 驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程
3 JDBC 体系架构
JDBC API 支持两层和三层处理模式,一般由两层处理模式组成:
(1) 面向应用的 API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行 SQL,获取结果)
(2) 面向数据库的 API:Java Driver API,供开发商开发数据库驱动程序使用
4 JDBC 驱动程序分类
(1) JDBC 驱动程序:各个数据库厂商根据 JDBC 的规范制作的 JDBC 实现类的类库
(2) JDBC 驱动程序总共分为四类:
● JDBC-ODBC 桥
● 部分本地 API 部分 Java 的驱动程序
● JDBC 网络纯 Java 驱动程序
● 本地协议的纯 Java 驱动程序
第三类和第四类都是纯 Java 的驱动程序,对于 Java 开发者来说在性能、可移植性和功能等方面都具有优势
5 本地协议的纯 Java 驱动程序
(1) 多数数据库厂商已经支持允许客户程序通过网络直接与数据库通信的网络协议
(2) 这种类型的驱动程序完全使用 Java 编写,通过与数据库建立的 Socket 连接,采用具体与厂商的网络协议把 JDBC 调用转换为直接连接的网络调用
6 JDBC API
JDBC API 是一系列接口,使得应用程序能够进行数据库连接,执行 SQL 语句,并且得到返回结果
7 Driver 接口
(1) java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现
(2) 在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器(java.sql.DriverManager)去调用这些 Driver 实现
8 加载与注册 JDBC 驱动
(1) 加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名
(2) DriverManager 类是驱动程序管理器类,负责管理驱动程序
(3) 通常不用显示调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实例,因为 Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中会调用 DriverManager.registerDriver() 方法来注册自身的一个实例
9 建立连接
(1) 可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接
(2) JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接
(3) JDBC URL 的标准由三部分组成,各部分之间用冒号分隔
jdbc:<子协议>:<子名称>
● 协议:JDBC URL 中的协议总是 jdbc
● 子协议:子协议用于标识一个数据库驱动程序
● 子名称:一种标识数据库的方法,子名称可以依不同的子协议而不同,用子名称的目的是为了定位数据库提供足够的信息
10 几种常用数据库的 JDBC URL
(1) MySQL:jdbc:mysql://localhost:3306/sid
(2) Oracle:jdbc:oracle:thin:@localhost:1521:sid
(3) SQLServer:jdbc:microsoft:sqlserver//localhost:1433