20145232 韩文浩 《Java程序设计》第9周学习总结
教材学习内容总结
学习目标
- 了解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驱动程序分为四种:
- JDBC-ODBC Bridge Driver
- Native API Driver
- JDBC-Net Driver
- 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实例
使用URLClassLoader来产生新的类加载器,需要java.net.URL作为其参数来指定类加载的搜索路径。使用URLClassLoader的loadClass()方法加载指定类时,会先委托父加载器代为搜索。
由同一类加载器载入的.class文档,只会有一个Class实例。如果同一.class文档由两个不同的类加载器载入,则会有两份不同的Class实例。
path可以输入不在System Loader以上层级类加载器搜索路径的其他路径。
- 使用常用的标准注释
@Override
就是标准注释,被注释的方法必须是父类或接口中已定义的方法,请编译程序协助是否真的为重新定义方法。@Deprecated
如果某个方法原先存在与API中,后来不建议再使用,可以在该方法上注释。若有用户后续想调用或重新定义这个方法,编译程序会提出警告。对于支持泛型的API,建议明确指定泛型真正类型,如果没有指定,编译程序会提出警告。@SuppressWarnings
指定抑制unchecked的警告产生:
@SuppressWarnings(value={"unchecked"})@SafeVarargs
表明开发人员确定避免了heap pollution问题。heap pollution问题就是编译程序无法检查执行时期的类型错误,无法具体确认自变量类型。@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周学习总结的更多相关文章
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
- 20155213 2016-2017-2 《Java程序设计》第二周学习总结
20155213 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 关于Unicode和UTF 很抱歉,没能读完娄老师推荐的网址,关于Unicode和UTF的介 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20165223《JAVA程序设计》第二周学习总结
20165223 <JAVA程序设计>第二周学习总结 教材学习内容总结 第二章要点 标识符与关键字 基本数据类型 类型转换运算 输入输出数据 数组 第三章要点 运算符与表达式 语句概述 i ...
随机推荐
- webstorm 打包angular Module build failed: Error: No PostCSS Config found
angular创建项目后,在webstorm中启动时,报出如题错误,奇怪的是我从命令行启动(ng server)是没有问题的,多方寻求无果,在网上看到过说要加一个配置文件,我不信.我觉得是我配置哪里有 ...
- Jenkins与SVN持续集成
官网下载Jenkins&SVN&eclipse,版本号没要求,建议使用最新稳定版本 登录Jenkins:http://localhost:8080 登录SVN:http://local ...
- 偷懒把本来要判断输入值的textbox 输出提示值,结果点两次程序异常
调试程序是苦并快乐着的事, 为防止用户直接点击导入下表,于是我设置提示,点击时先判断textbox 里边有无值,为空的话也在textbox做提示 程序如下: 点一次可以正常输出到textbox中,点第 ...
- 自己动手开启QUIC(转载)
源:https://www.bennythink.com/quic.html#title-0 今天在推上偶然发现 Google 在自己的服务器上启用了 QUIC,QUIC 这东西嘛(发音同 quick ...
- iOS.OpenSource.PopularProject
1. Core Plot Core Plot is a plotting framework for OS X and iOS. It provides 2D visualization of dat ...
- Linux网卡绑定探析
2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的网卡绑定模式,Linux b ...
- 转录组的组装Stingtie和Cufflinks
转录组的组装Stingtie和Cufflinks Posted: 十月 18, 2017 Under: Transcriptomics By Kai no Comments 首先这两款软件都是用 ...
- 10分钟搭建 App 主流框架
搭建主流框架界面 0.达成效果 我们玩iPhone应用的时候,有没发现大部分的应用都是上图差不多的结构,下面的TabBar控制器可以切换子控制器,上面又有Navigation导航条 我们本文主要是搭建 ...
- VS2010下MFC的串口编程
串口通信简介 一般来说,计算机都有一个或多个串行端口,这些串口提供了外部设备与PC进行数据传输和通信的通道,在CPU和外设之间充当解释器的角色.当字符数据从CPU发送给外设时,这些字符数据将被转换成串 ...
- POJ 2135.Farm Tour 消负圈法最小费用最大流
Evacuation Plan Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4914 Accepted: 1284 ...