数据库程序接口——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 ...
随机推荐
- [PAT] A1020 Tree Traversals
[题目] distinct 不同的 postorder 后序的 inorder 中序的 sequence 顺序:次序:系列 traversal 遍历 题目大意:给出二叉树的后序遍历和中序遍历,求层次遍 ...
- PAT (Advanced Level) Practice 1027 Colors in Mars (20 分)
People in Mars represent the colors in their computers in a similar way as the Earth people. That is ...
- ASP.NET MVC中ActionResult的不同返回方式
1.返回视图 return View();//返回方法名对应的视图 return View("aaa");//返回名称为aaa的视图 2.返回文本内容 return Content ...
- MySQL数据库优化(一)
1.1.1. 慢查询日志当查询超过一定的时间没有返回结果的时候,才会记录到慢查询日志中.默认不开启.采样的时候手工开启.可以帮助我们找出执行慢的 SQL 语句查看慢 SQL 日志是否启用(on 表示启 ...
- BZOJ4668 冷战(LCT维护最小生成树)
BZOJ4668 冷战(LCT维护最小生成树) 题面 自己找去 HINT 这道题就是动态加边,然后查询u,v两点最早什么时候联通,强制在线.思考一下,最早什么时候联通不就等同于维护最小生成树吗(把这条 ...
- mysql权限过滤
1.用like做权限过滤 上级部门可以看到下级部门发布的正式文件,下级部门不能看到上级部门发布的正式文件 SELECT*FROM cms_nrgl_st a, mz_xzjg bWHERE a.sys ...
- tomcat-embeded-core源码编译
使用spring-boot创建web工程时,默认采用embeded tomcat作为容器,实际使用过程中,可能会需要对其中的某些功能做微调,而tomcat又没有给出预留配 ,这时就需要对tomcat- ...
- python 方法和函数
代码 def func(): pass class Foo(object): def func(self): pass # 执行方式一 # obj = Foo() # obj.func() # 方法 ...
- LaTeX技巧009:中国象棋的LaTeX排版
Latex可以排版容易排版中国象棋, 围棋, 国际象棋棋谱和乐谱, 详情请见. http://bbs.chinatex.org/forum.php?mod=viewthread&tid=498 ...
- H3C IP路由基础
一.路由简介 在网络中路由器根据所收到的报文的目的地址选择一条合适的路径,并将报文转发到下一个路由器.路径中最后一个路由器负责将报文转发给目的主机. 路由就是报文在转发过程中的路径信息,用来指导报文转 ...