201521123091 《Java程序设计》第14周学习总结

Java 第十四周总结

第十四周的做业。
java

目录
1.本章学习总结
2.Java Q&A
3.码云上代码提交记录及PTA实验总结
4.课后阅读mysql


1.本章学习总结

以你喜欢的方式(思惟导图或其余)概括总结数据库相关内容。

  • JDBC API使程序员能够经过这个API接口链接到数据库,并使用SQL完成对数据库的查找与更新。
  • 根据API编写的程序均可以与驱动管理器进行通讯,而驱动管理器则经过驱动程序与实际的数据库进行通讯。

总之,JDBC最终是为了实现如下目标:
1.经过使用标准的SQL语句,甚至是专门的SQL扩展,程序员就能够利用Java语言开发访问数据库的应用,同时还依旧遵照Java语言的相关约定。
2.数据库供应商和数据库工具开发商能够提供底层的驱动程序。所以,他们能够优化各自数据库产品的驱动程序。程序员

  • 每一个Connection对象均可以建立一个或多个Statement对象,同一个Statement对象能够用于多个不相关的命令和查询。可是,一个Statement对象最多只能有一个打开的结果集。若是须要执行多个查询操做,且须要同时分析查询结果,那么必须建立多个statement对象。
  • 使用完Resultset、Statement或Connection对象后,应当即调用close方法,由于他们使用了资源,须要及时释放。
  • Java SE7之后,在Statement上调用了closeOnCompletion方法,在其全部结果集都被关闭以后,该语句也会当即被自动关闭。
  • 没有必要再每次开始一个查询时都创建新的查询语句,而是准备一个带有宿主变量的查询语句,每次查询时只需为该变量填入不一样的字符串就能够反复屡次使用该语句。这样就能够改进查询性能,由于每当数据库执行一个查询时,它老是首先经过计算来查询策略,以便高效地执行查询操做。
  • 在SQL中,描述数据库或其组成部分的数据称为元数据(MetaData)。

2.Java Q&A

1. MySQL数据库基本操做

创建数据库,将本身的姓名、学号做为一条记录插入。(截图,需出现本身的学号、姓名),在本身创建的数据库上执行常见SQL语句(截图)


建立名为test的数据库,而且新建名为student的表,字段分别为id、名字、年龄和成绩。而后使用desc来显示表的结构,desc不能用于数据库。sql


在后面追加一个名为num的字段,表示学号,再将name字段放在num字段的后面。数据库


将score改为double类型,而后连续插入三条记录,最后把本身的记录给删掉。数组


最后删除整个数据库,而后就用不了了。工具


2. 使用JDBC链接数据库与Statement

2.1 使用Statement操做数据库。(粘贴一段你认为比较有价值的代码,出现学号)

  1. 得到链接的同时也要指定用户名和密码,不然会抛出SQLException:Access denied for user ''@'localhost' (using password: NO)即没有密码没法链接。
  2. 不能重复建立表,可是若是只是单纯使用create命令,就须要每次运行前还要把相应的数据库删掉,实在是太麻烦了,因此加上IF NOT EXISTS语句来解决这个问题。
  3. 链接的关闭放在finally块中更好。

2.2 使用JDBC操做数据库主要包含哪几个步骤?

  1. 将所使用的数据库的驱动程序的JAR文件包括到类路径中去。这样能够自动注册驱动器类。
  2. 使用主机名、端口号和数据库名,这边还有用户名和密码链接数据库。
  3. 进行查询准备,而后执行查询或者更新。
  4. 处理结果。
  5. 关闭查询和链接。

3. PreparedStatement与参数化查询

3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)



3.2 批量更新-批量插入1000个学生,统计整个操做所消耗的时间。(使用方法executeBatch)


4. JDBCUtil与DAO

4.1 粘贴一段你认为比较有价值的代码,出现学号

老师的就很好:


性能


4.2 使用DAO模式访问数据库有什么好处?

数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操做从高级的业务服务中分离出来。如下是数据访问对象模式的参与者。单元测试

  • 数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执行的标准操做。
  • 数据访问对象实体类(Data Access Object concrete class) - 该类实现了上述的接口。该类负责从数据源获取数据,数据源能够是数据库,也能够是 xml,或者是其余的存储机制。
  • 模型对象/数值对象(Model Object/Value Object) - 该对象是简单的 POJO,包含了 get/set 方法来存储经过使用 DAO 类检索到的数据。

使用DAO的好处就是能够分离应用中不用相互了解的两个部分,即不须要知道对方的具体信息,例如业务对象只应该关注业务逻辑,不该该关心数据存取的细节。存储数据的细节在应用程序当中都是隐藏的,只要接口仍是正常工做的,那么即便底层的实现发生了改变,那么DAO的用户也不会出现任何问题。DAO就像防护应用程序和数据库的中介,数据在对象和数据库的记录中移动。还有就是进行分离能够更容易进行单元测试。学习

DAO层使应用程序更加容易地迁移到一个不一样的数据库实现。业务对象不了解低层数据实现。于是,该迁移只涉及对DAO层的变化。更进一步说,若是使用工厂策略,则有可能为每个低层存储实现提供一个具体工厂实现。在这种状况下,迁移到不一样的迁移实现意味着给应用程序提供一个新的工厂实现。同时,抽象DAO工厂能够指定须要建立的实例DAO,并交由不一样的具体DAO工厂去建立。


5. 使用数据库改造购物车系统

5.1 使用数据库改造之前的购物车系统(应有图形界面)。若是之前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。

修改了一下全部商品的构造器。

运行界面和以前依然同样,没有差。

5.2 相比较使用文件,使用数据库存储与管理数据有何不同?

能够直接和数据库进行交互,而文件须要先把数据读出来,而后用数组或者是列表来存放,数据库的操做会更加方便。


6. 批量更新测试

数据库课程上,须要测试索引对查找的加速做用。然而在几百或几千的数据量上进行操做没法直观地体验到索引的加速做用。现但愿编写一个程序,批量插入1000万条数据,且该数据中的某些字段的内容能够随机生成。

6.1 截图你的代码(出现学号)、统计运行时间

就10w,1kw跑不出来:

6.2 计算插入的速度到底有多快?(以条/秒、KB/秒两种方式计算)


7. 事务处理

7.1 使用代码与运行结果证实你确实实现了事务处理功能。(粘贴一段你认为比较有价值的代码,出现学号)

正常的是这样的:

而后我把数据删了,来个会出错的语句:

增长和查询共同组成一个事务,而后由于查询出现了异常。因此并无任何数据

7.2 你以为何时须要使用事务处理?

  一组语句构建成一个事务。当全部语句都顺利执行以后,事务能够被提交。不然,若是其中某个语句遇到错误,那么事务将被回滚,就好像没有任何语句被执行同样。
  若是要确保数据库完整性(database integrity),就要使用事务。举个最浅显的例子,好比转钱,把钱取出来,正要存入其余帐号的时候,系统GG了,那么就须要撤销取款操做。
若是把语句组合成一个事务,那么事务要么成功执行全部操做并提交,要么在中间失败了,而后就回滚,就是自动撤销以前所作的更新操做以及其产生的影响。
  在事务处理的时候,自动提交模式须要被关闭:'con.setAutoCommit(false);'。若是出现错误,就用rollback()方法,那么就会回滚到最开始。
  固然Java提供 了保存点来更细粒度地控制回滚操做。若是一个点被保存,那么待会出错的时候就能够回滚到这个点,而不是事务的一开始。
还有,批量更新也是事务处理的常见方法,整个语句序列做为一批操做一批操做整个提交上去。
  咱们能够批量地插入、更新或者是删除,也能够批量建立表、批量删除表。可是,批量处理中添加选择语句的时候就会抛出异常,由于批量处理的选择语句没有意义,选择语句会返回结果集,而不是更新数据库。


3.码云上代码提交记录

3.1 码云代码提交记录

  在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 而后搜索并截图


4. 课外阅读

4.1 JDBC(TM) Database Access

  Lesson: JDBC Introduction
  JDBC API能够用来访问任何表格数据,甚至是放在关系型数据库中的数据。
  JDBC可使咱们的Java程序:

  1. 链接到一个数据源,好比数据库。DriverManager链接到数据库的驱动而且登进去。
  2. 给数据库发送查询和更新语句。Statement发送这类的SQL语句。
  3. 数据库根据咱们的查询提供相应的数据,咱们能够处理这些数据。ResultSet取回查询的结果,而且能够放在while循环中,获得全部符合条件的结果。

  JDBC包含四个东西:

  1. JDBC API
  2. JDBC驱动管理器
  3. JDBC测试套件
  4. JDBC-ODBC套件

  根据API编写的程序均可以与驱动管理器进行通讯,而驱动管理器则经过驱动程序与实际数据库进行通讯。

关系型数据库概览

  数据库是用来存放信息的一种方式。用最简单的话说,关系型数据库就是用行列组成的表现信息的表格。一个表格是用来存放具备相同类型的对象的集合。根据常见的关系,表格中的数据能够相互联系,关系型数据库的基础就是可以从表格最后那个取出相关的数据。DBMS处理存放、维护、取出数据的方式。RDBMS就是关系型数据库中的DBMS。

4.2 代码结构中Dao,Service,Controller,Util,Model是什么意思,为何划分

【修真院“善良”系列之十六】代码结构中Dao,Service,Controller,Util,Model是什么意思,为何划分
  为了让咱们的代码写出来不会是一坨的,让代码更容易阅读,协做更容易进行,因此须要一些分类来肢解整个代码结构。

  • Model:用来抽象数据,Model的实例做为纯数据的集合,做为一个整个的载体在程序中被组装而且操做,即“业务逻辑映射成数据模型”。
  • Util:用来描述和业务逻辑没有关系的数据处理。Util这个工具类是公用的,与私有方法相区别,私有方法是专门针对数据在某种特定场景下使用的方法。Util通常有明确的输入和明确的输出,更适合用于单元测试。
  • Service:望文生义,就是服务,提供服务。比Util的概念大,包括一系列的数据处理,或者Util,或者别的服务
  • Dao:负责对数据库的增删改查(CRUD),并且只负责这些东西,数据怎么来,去干嘛都无论。通常会提供一个接口,而后能够用不一样的容器来存放这些数据,能够是数组、列表或者是数据库,固然对于大型的应用,前面两种应该是用不上的。
  • Controller:控制者,负责总的调度,发出命令,给各分类提供明确的任务。

  下面我都看不懂了。

4.3 mysq数据库管理工具navicat基本使用方法








  其余的操做就都差很少了,挺好用的,就是只能试用14天。

相关文章
相关标签/搜索