教材学习内容总结

学习目标

  • 了解JDBC架构
  • 掌握JDBC架构
  • 掌握反射与ClassLoader
  • 了解自定义泛型和自定义枚举
  • 会使用标准注解

JDBC标准主要分为两个部分:JDBC应用程序开发者接口JDBC驱动程序开发者接口。应用程序需要联机数据库,其相关API主要在java.sql和javax.sql两个包中。

应用程序会使用JDBC联机数据库:
Connection conn = DriverManager.getConnection(……);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM T_USER");

JDBC驱动程序分为四种:

  1. JDBC-ODBC Bridge Driver
  2. Native API Driver
  3. JDBC-Net Driver
  4. Native Protocl Drivel:可跨平台,是最常见的驱动程序类型

基本数据库操作相关JDBC接口或类是为位于java.sql包中。要取得数据库联机,必须进行几个动作:

  • 注册Driver对象
  • 取得Connection操作对象
  • 关闭Connection操作对象

使用JDBC要求加载.class文档的4种方式:
(1)使用Class.forName()
(2)自行建立Driver接口操作类的实例
直接撰写程序代码:
java.sql.Driver driver = new com.mysql.jdbc.Driver()
(3)启动JVM时指定jdbc.drivers属性
执行Java指令:
> java -Djdbc.drivers=com.mysql.jdbc.Driver;ooo.XXXDriver YourProgram
(4)设定JAR中/services/java.sql.Driver文档

  • Statement是SQL描述的代表对象,可以使用executeUpdate()、executeQuery()等方法来执行SQL。

  • Statement的executeUpdate()方法用于SELECT等查询数据库的SQL,返回int结果,表示数据变动的笔数

  • Statement的executeQuery()方法返回java.sql.ResultSet对象,代表查询结果。

  • Statement的execute()方法用来执行SQL,返回true表示SQL执行将返回ResultSet作为查询结果。

  • 建立Statement或PreparedStatement实例时,可以指定结果集类型与并行方式。
    createStatement(int resultSetType,int resultSetConcurrency) prepareStatement(String sql,int resultSetType,int resultSetConcurrency)

  • 结果集类型resultSetType可以指定3种:
ResultSet.TYPE _ FORWARD _ ONLY(默认)
ResultSet.TYPE _ SCROLL _ INSENSITIVE
ResultSet.TYPE _ SCROLL _ SENSITIVE
  • 更新设定resultSetConcurrency可以有2种指定:
ResultSet.CONCURREADONLY(默认)
ResultSet.CONCUR_UPDATABLE
  • ResultSet进行数据修改,则有些条件限制:
必须选取单一表格
必须选取主键
必须选取所有NOT NULL的值
  • 交易的四个基本原则:
    原子性:若有一个步骤失败,必须撤回曾经执行过的动作,回到交易前的状态
    一致性:交易作用的数据集合在交易前后必须一致
    隔离行为:交易与交易之间,必须互不干扰
    持续性:即使系统挂了,交易的结果也不能遗失

  • 多个交易并行时,可能引发很多数据不一致的问题。

更新遗失:一个交易进行时,因为另一个交易的介入而遗失更新效力。
脏读:两个交易同时进行,一个更新数据但是未确认,另一个就读取,可能会读取到不正确的数据。
无法重复的读取:某个交易两次读取同一段数据的结果不一致
幻读:同一交易期间,读取到的交易笔数不一样

  • “诠读取数据的数据”
    可以通过Connection的getMetaDate()方法取得DatebaseMetaDate对象。

  • JDBC的数据列集合(电子表格、XML数据或其他具有列集合概念的数据源),可以使用RowSet对列集合进行增删查改。通过setCommand()设定查询指令,通过execute()执行查询指令以填充数据。

  • RowSet定义了五个标准列集合子接口:
    jdbcRowSet
    是联机式的RowSet,保持与数据库的联机,可视为取得、操作RowSet的行为封装。
    CacheRowSet
    是脱机式的RowSet,在查询并填充完数据后,会断开与数据源的联机
    FilteredRowSet
    可以对列集合进行过滤,实现类似SQL中WHERE等条件式的功能。
    JoinRowSet
    可以让你结合两个RowSet对象,可以通过setMatchColumn()指定要结合的行,然后使用addRowSet()来加入RowSet进行结合。
    WebRowSet
    是CachedRowSet的子接口,不仅具备脱机操作,还能进行XM读写。

  • 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射。

  • 建立ClassLoader实例

  1. 使用URLClassLoader来产生新的类加载器,需要java.net.URL作为其参数来指定类加载的搜索路径。使用URLClassLoader的loadClass()方法加载指定类时,会先委托父加载器代为搜索。

  2. 由同一类加载器载入的.class文档,只会有一个Class实例。如果同一.class文档由两个不同的类加载器载入,则会有两份不同的Class实例。

  3. path可以输入不在System Loader以上层级类加载器搜索路径的其他路径。

  • 使用常用的标准注释
  1. @Override
    就是标准注释,被注释的方法必须是父类或接口中已定义的方法,请编译程序协助是否真的为重新定义方法。

  2. @Deprecated
    如果某个方法原先存在与API中,后来不建议再使用,可以在该方法上注释。若有用户后续想调用或重新定义这个方法,编译程序会提出警告。对于支持泛型的API,建议明确指定泛型真正类型,如果没有指定,编译程序会提出警告。

  3. @SuppressWarnings
    指定抑制unchecked的警告产生:
    @SuppressWarnings(value={"unchecked"})

  4. @SafeVarargs
    表明开发人员确定避免了heap pollution问题。heap pollution问题就是编译程序无法检查执行时期的类型错误,无法具体确认自变量类型。

  5. @FunctionalInterface
    让编译程序可协助检查interface是否可做为lambda的目标类型

本周代码托管截图



学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 16篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 1/3 25/45
第三周 500/1000 1/4 40/85
第四周 800/1800 1/5 45/130
第五周 700/2500 1/6 43/173
第六周 700/3200 1/7 48/221
第七周 400/3600 1/8 39/260
第八周 400/4000 1/9 40/300
第九周 500/4500 1/10 45/345

参考资料

20145232 韩文浩 《Java程序设计》第9周学习总结的更多相关文章

  1. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

  2. 20155213 2016-2017-2 《Java程序设计》第二周学习总结

    20155213 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 关于Unicode和UTF 很抱歉,没能读完娄老师推荐的网址,关于Unicode和UTF的介 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  8. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  9. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  10. 20165223《JAVA程序设计》第二周学习总结

    20165223 <JAVA程序设计>第二周学习总结 教材学习内容总结 第二章要点 标识符与关键字 基本数据类型 类型转换运算 输入输出数据 数组 第三章要点 运算符与表达式 语句概述 i ...

随机推荐

  1. 汇编中CMP的作用

    假设现在AX寄存器中的数是0002H,BX寄存器中的数是0003H.执行的指令是:CMP  AX,  BX 执行这条指令时,先做用AX中的数减去BX中的数的减法运算.列出二进制运算式子:      0 ...

  2. IIS 7.5 上传文件大小限制

    上传插件:uploadify IIS版本:7.5 描述: 从IIS6升级到IIS7.5以后,网站上传文件大小被限制了,在Chrome下提示:ERR_CONNECTION_RESET,网上的各种方法都试 ...

  3. Employee类

    package demo; import java.time.LocalDate; public class Employee { private String name; private doubl ...

  4. 18.Mysql SQL优化

    18.SQL优化18.1 优化SQL语句的一般步骤 18.1.1 通过show status命令了解各种SQL的执行频率show [session|global] status; -- 查看服务器状态 ...

  5. 解决织梦替换ueditor编辑器后栏目与单页无法保存内容

    织梦的默认编辑器是ckeditor,没有插入代码的功能,不够强大,就换成了百度的UEditor编辑器. 使用织梦DedeCMS百度整合UEditor编辑器时,碰到了栏目内容或者单页无法保存的问题,这个 ...

  6. 使用GrabCut提取前景图像的示范代码

    #include<opencv2/opencv.hpp> bool selectObject = false; cv::Point origin; cv::Rect selection; ...

  7. MFC窗口颜色的设置

    本文主要介绍对话框背景色以及控件颜色的设置(SetDialogBkColor()不再被支持). 对话框背景色的设置 1.重载OnPaint()函数,即WM_PAINT消息,代码如下所示: void C ...

  8. 看看用PS来转基因的动物,居然很欢乐!!

    出于礼貌,我先笑一下,哈哈哈哈哈哈!好了,开始.Gyyporama是挪威的一名程序员,他无聊的时候会从网上找来一些动物的图片,把他们的头和身体进行混合,生成另一种奇怪的动物.然后邀请其他网友过来给他们 ...

  9. Sevlet处理HTML表单

    表单<form>用于搜集不同类型的用户输入.可以轻松地将一个HTML表单从一个Servlet发送到浏览器,当用户提交表单时,在表单元素中输入的值就会被当做请求参数发送到服务器. reque ...

  10. [Groovy] 创建Excel,追加Excel

    package ScriptLibrary import java.awt.Color import java.awt.GraphicsConfiguration.DefaultBufferCapab ...