码迷,mamicode.com
首页 > 数据库 > 详细

初篇——目录(JDBC)

时间:2017-06-15 21:38:35      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:span   通过   toc   在线   resultset   多次   www   c3p0   stat   

目录                                                             

建立连接

    核心对象

        Driver

        DriverManager

        Connection

        DataSource

    常用功能

       第一个程序

       C3P0数据源

       DBCP数据源

       事务之Spring事务

执行SQL

     核心对象

     常用功能

        批量处理

处理结果集

      核心对象

综述                                                            

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)

标签:span   通过   toc   在线   resultset   多次   www   c3p0   stat   

原文地址:http://www.cnblogs.com/rain144576/p/6884196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!