数据库程序接口——JDBC——初篇——目录
目录
综述
JDBC全称为Java database connectivity,作用是通过Java程序与数据库进行交互,交互过程有三个阶段。
建立连接:java程序与数据库建立连接的方式有两种。
第一种方式通过驱动类(Driver或DriverManager)来建立连接。驱动方式只能建立物理连接,这种方式创建的Connection对象在执行完SQL语句之后无法被复用,每次请求数据库都需要重新建立连接,创建Connection对象。
第二种方式是通过数据源(DataSource)的方式来建立连接。
数据源方式根据数据源的种类决定其建立连接的类型。数据源种类有三种DataSource,PooledDataSource,XADataSource。
DataSource建立的连接为普通连接,创建Connection对象。
PooledDataSource建立的连接支持连接池,,每次请求数据库时,都从连接池中获取Connection对象,请求完成之后,Connection对象被连接池回收。
XADataSource建立的连接支持分布式应用,支持分布式事务,一般分布式应用都支持连接池。
无论哪种方式,建立连接都需要先加载驱动类,java通过接口Driver来表示驱动类,每种类型的数据库都有自己的实现类,例如Oracle数据库的OracleDriver。
执行SQL:执行SQL语句的对象有三种类型
Statement用来执行整段SQL语句,SQL语句中没有参数,每次运行都需要重新编译SQL语句。
PreparedStament继承自statement,SQL语句会预先编译,所以在创建PreparedStatement时,SQL是必要参数。SQL语句可以包含参数占位符”?”,可以根据”?”的位置和其对应的数据类型来传参。它一般用来执行结构不变,而参数值变化的SQL语句。因为有预编译,所以效率比Statement要高。
CallableStatement用来调用数据库中的存储过程,它需要处理如何给存储过程传参,如何接收存储过程的返回值。
SQL的执行过程与事务相关。事务是一组SQL语句执行的序列。事务具有四个特性:
原子性:SQL语句集合执行要么全部成功,要么全部失败。
隔离性:事务彼此之间是无感知的,事务是彼此独立存在的。
一致性:事务执行前后数据保持一致的状态,例如A给B汇款,A账户减少了,B账户对应增加。如果A账户减少了,而B账户没有增加,那么数据就处于不一致的状态。
持久性:事务对数据库操作的修改是永久性的。
处理结果集:将SQL返回的结果集映射为Java对象。数据库中每个表与一个或者多个java类对应,表的列与java类中的属性相对应(数据类型需要兼容),每一条记录都对应java类的一个实例。在结果集映射的过程中,最关键的是java数据类型与数据库数据类型之间的映射关系。。
结果集可以指定同步方式,遍历方式,关闭方式。
同步方式:结果集与数据库是否同步,亦即结果集的改变同步到数据库当中,数据库的改变同步到结果集当中。ResultSet.CONCUR_UPDATABLE表示结果集时可更新的,这种方式会同步。ResultSet.CONCUR_READONLY表示结果集是只读的,默认的类型为只读类型
遍历方式:结果集支持的遍历类型,ResultSet.TYPE_FORWARD_ONLY表示只能从头到尾遍历。ResultSet.TYPE_SCROLL_SENSITIVE表示遍历顺序可以该变,也可以重复遍历(在一次遍历操作中多次遍历相同数据,类似于视频倒退,重播等操作)。ResultSet.TYPE_SCROLL_INSENSITIVE表示数据库的改变不会同步到结果集当中。
关闭方式:结果集是否随事务提交而关闭,ResultSet.CLOSE_CURSORS_AT_COMMIT 表示会随事务提交而关闭,这种方式是默认方式。ResultSet.HOLD_CUSORS_OVER_COMMIT表示结果集不随事务的提交而关闭。
至此整个交互过程结束,交互结束完成之后需要释放资源,也就是关闭Connection,statement,resultSet等对象。
参考资料
在线文档
Getting Started with the JDBC API
http://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html
API:
JDK 1.8 java.sql,javax.sql包等 http://docs.oracle.com/javase/8/docs/api/
数据库程序接口——JDBC——初篇——目录的更多相关文章
- 数据库程序接口——JDBC——API解读第一篇——建立连接的核心对象
结构图 核心对象 Driver Java通过Driver接口表示驱动,每种类型的数据库通过实现Driver接口提供自己的Driver实现类. Driver由属性,操作,事件三部分组成. 属性 公共属性 ...
- 数据库程序接口——JDBC——API解读第二篇——执行SQL的核心对象
结构图 核心对象 Statement Statement主要用来执行SQL语句.它执行SQL语句的步骤为: 第一步:创建statement对象. 第二步:配置statement对象,此步骤可以忽略. ...
- 数据库程序接口——JDBC——功能第一篇——第一个程序
流程图 综述 从零开始搭建JDBC环境.通过创建Java项目,在项目中,通过java程序执行SQL,并处理返回的结果.本文通过执行 select 1 from dual 语句来测试,并输出相结果集.首 ...
- 数据库程序接口——JDBC——功能第四篇——事务之Spring事务
综述 事务的实现方式有三种,JTA,Spring事务,Web Container方式.本篇讲述Spring事务. Spring事务分为两个部分核心对象,Spring事务的实现方式. Spring事务实 ...
- 数据库程序接口——JDBC——功能第五篇——批量处理
综述 批量处理一般指批量插入,批量更新,删除通过可以指定where条件实现.批量插入的实现方式有三种类型.statement,preparedStatement,callableStatement. ...
- 数据库程序接口——JDBC——功能第二篇——数据源之C3P0数据源
综述 C3P0由三部分内容组成.实例化对象,各配置项的含义,以及加载配置项的方式. 实例化对象的方式有三种,第一种方式直接new ComboPooledDataSource,第二种方式使用工厂类Dat ...
- 数据库程序接口——JDBC——API解读第三篇——处理结果集的核心对象
核心对象 处理结果集的核心对象有ResultSet和RowSet.其中ResultSet指定关系型数据库的结果集,RowSet更为抽象,凡是由行列组成的数据都可以. ResultSet ResultS ...
- 初篇——目录(JavaMail)
结构图 目录 邮件的知识体系由三部分组成,邮箱服务器,邮件程序,邮件协议. 邮箱服务器一般都是由公司的网络工程师搭建完成,基本上与程序员没有关系.但是笔者还是亲自尝试,使用Apache James搭建 ...
- 后端工具——Maven——初篇——目录
目录 Maven的知识体系包括四个部分.Maven的配置文件,Maven命令,Maven生命周期,Maven插件.在介绍Maven之前,首先需要介绍如何安装Maven. 安装:介绍Maven在Linu ...
随机推荐
- Linux指令(Terminal命令):
刚开始学习Linux,整理了一下常用指令和快捷键,不足的日后补充. 指令:# cd:进入目录 pwd:查看当前所在路径 ls:查看当前所在目录下的所有子目录或者子文件 ls-l | l ...
- ESLint 使用指南
ESLint 官方文档 About 页面分 About 和 Philosophy 两个部分对 ESLint 做了介绍,简洁明了,值得一读. 借助 ESLint,可将 静态代码分析 和 问题代码协助修复 ...
- CF566C Logistical Questions(10-1)
题意 \(n\)个点的树,有点权,有边权,\(f(x)=\sum\limits_{i=1}^n w_idis(i,x)^{1.5}\),求最小的\(f(x)\)的\(x\) 单独考虑一条链,顺序编号, ...
- Maven修改test/rsource的output folder报错Test source folder 'src/test/java'... is not also used for main s
eclipse新建maven项目时候,只出来三个文件夹,然后大都督手动添加了缺失的src/test/resource 的文件夹,最后想修改一下 Output folder的路径为 (原来是 d ...
- CSS之 元素显示隐藏,用户界面样式,文本溢出隐藏,精灵技术,三角形
元素的显示与隐藏 display 显示 display 设置或检索对象是否及如何显示 display: none; 隐藏对象 display: block; 除了转换为块级元素, 同时还有显示元素的意 ...
- [TJOI2013] 奖学金 - 堆
按 a 排序,暴力用堆维护两侧预处理, 然后枚举中位数即可 #include <bits/stdc++.h> using namespace std; #define int long l ...
- ActiveMQ的p2p模式与发布订阅模式
1.消息中间件:采用异步通讯防止,支持点对点以及发布订阅模式,可以解决高并发问题 传统调用接口,可能发生阻塞,重复提交,超时等等问题,可以利用消息中间件发送异步通讯请求 ...
- Myeclipse连接Mysql数据库时报错:Error while performing database login with the pro driver:unable
driver template: Mysql connector/j(下拉框进行选择) driver name: 任意填,最好是数据库名称,方便查找 connection URL: jdbc:mysq ...
- 安装postman时遇到“无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上.”的问题
安装postman时遇到“无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上.”的问题 解决办法: 1.安装系统更新补丁KB2533623,下 ...
- nginx启动时指定配置文件
下载源文件方式安装nginx 会在/usr/local目录下安装nginx 此时虚拟机系统中会有两个nginx 如果启动的时候没有指定配置文件的位置,默认读取的配置文件就是/usr/local/ngi ...