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 ...
随机推荐
- 关于变量参数的传递,python让人蛋痛的地方
def find_file(file_table): with open(file_table, 'r', encoding='utf-8') as read_f: line_dict = {} fo ...
- .netcore webapi iis 虚拟目录下载apk文件
首先贴上微软的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files 参考网址:http://www.cnb ...
- js倒计时跳转页面实现
- Phong和Blinn-Phong光照模型
Phong和Blinn-Phong是计算镜面反射光的两种光照模型,两者仅仅有很小的不同之处. 1.Phong模型 Phone模型计算中的一个关键步骤就是反射向量R的计算: 上图中的位于表面“下面”的向 ...
- Android——Activity练习
manifests里的AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> < ...
- 解决IDEA 配置搞坏的问题
如果我们把IDEA的配置给搞坏了,或者想重新配置,恢复到默认配置. 1.打开如下的目录(不同用户名目录有差异),如下所示: 2.删除掉config 和 system 目录,重新启动 IDEA会自动生成 ...
- $ each() 小结
each()方法能使DOM循环结构简洁,不容易出错.each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组.多维数组.DOM, JSON 等等在javaScript开发过程中使用$ ...
- Tech 2 doesn’t system for H2 above 2007
I purchased my Tech2 from obd2tool.com and it operates excellent. Can not definitely compare softwar ...
- 【解决办法--实测可行】Partition 1 does not start on physical sector boundary.
新的硬盘使用fdisk进行划分的时候有提示Partition 1 does not start on physical sector boundary.后面按网上找的办法,在fdisk进行分区的时候, ...
- Two Sum LT1
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...