上一次我们是先实现了JDBC对数据库的增删查改操作,然后在增加新信息过程中发现了新的问题,即当某一操作失败,为了维护数据库的一致性,我们需要回滚事务。在其中我们了解了事务的工作原理及相关代码的使用。

    但是在前面的代码中,我们直接将数据库的链接和要完成增删查改的内容写入了原码,这种做法是非常不适于工业标准的。所以本次我们需要开始优化代码。

1.善用properties配置文件

新建一个dbconfig.properties文件用于存储数据库的URL,Driver,数据库用户名,数据库密码。目的是为了方便修改代码。

2..构造一个Connection链接工厂

   完成从properties中读取配置信息,并以此为向导连接数据库。其中使用静态代码块和单例模式,以确保在程序执行过程中只会有一个ConnectionFactory实例。

3.构建DTO类,用以实现检索和存储与数据库交流的数据对象。

首先构建父类IdEntity,父类中存在Id成员变量,这也是所有子类应该具备的成员变量。
然后分别构建User和Adress子类,并生成相应的set(),get()方法。

 

4.构建DAO类

  DAO类是数据访问对象,通过DAO来处理从数据库中取出的数据,或者通过DAO来存入要更新向数据库中的数据。DAO中包含大量的逻辑代码。
  为了保证程序的可移植性,首先新建一个DAO的接口,构建类的外观,然后再去implements这个接口。
 然后去implements这个接口:

 
 最后在主函数中实例化DAO类的对象,实现向数据库传递信息。
 总结:在整个代码优化过程中,包含了丰富的代码优化的思想。我们首先利用了properties来保存数据库的相关信息,然后利用ConnectionFactory的单例模式和makeConnection方法来完成对properties指向的数据库的连接。同时将与数据库进行交流的数据,抽象成一个DTO类。将与数据库数据交流的动作,抽象成一个DAO类。
原码链接如下:https://github.com/Dante-dan/JDBC
 

JDBC之代码优化的更多相关文章

  1. Java代码优化(长期更新)

    前言 2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,我的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸 ...

  2. MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. java提高数据库访问效率代码优化

    package com.jb.jubmis.comm; import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQL ...

  4. Java 代码优化过程的实例介绍

    衡量程序的标准 衡量一个程序是否优质,可以从多个角度进行分析.其中,最常见的衡量标准是程序的时间复杂度.空间复杂度,以及代码的可读性.可扩展性.针对程序的时间复杂度和空间复杂度,想要优化程序代码,需要 ...

  5. (转)Java 代码优化过程的实例介绍

    简介: 通过笔者经历的一个项目实例,本文介绍了 Java 代码优化的过程,总结了优化 Java 程序的一些最佳实践,分析了进行优化的方法,并解释了性能提升的原因.从多个角度分析导致性能低的原因,并逐个 ...

  6. JDBC增删改数据库的操作

    JDBC入门及简单增删改数据库的操作 一.JDBC的引入 1.JDBC的概念 JDBC:Java Database Connection,表示数据库连接(任何数据库都支持JDBC的连接),是一个独立于 ...

  7. Java代码优化(转)

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  8. Spring第七篇【Spring的JDBC模块】

    前言 上一篇Spring博文主要讲解了如何使用Spring来实现AOP编程,本博文主要讲解Spring的对JDBC的支持- 对于JDBC而言,我们肯定不会陌生,我们在初学的时候肯定写过非常非常多的JD ...

  9. JDBC数据库操作

    JDBC:   创建SQL语句对象    Statement statement = (Statement) con.createStatement() ;   调用执行     statement. ...

随机推荐

  1. Mysql 协议嗅探

    需求 监听通过网卡的所有mysql流量,进行解析,可在不影响现有业务情况下,进行入侵检测(IDS)或数据集成 协议要点 起初发现 用mysql-front访问数据库和mysql 的客户端访问时数据包格 ...

  2. 基于java的后台截图功能的实现

    Java后台截图功能的实现 背景介绍: 在近期开发的可视化二期项目中的邮件项目中,邮件中的正文中含有图片.该图片的产生是将一些html网页转为图片格式,刚开始考虑使用第三方组件库html2image和 ...

  3. webpack 的使用2

    实际项目中的配置 要加__dirname 不然会报错 注意path  /dist 前不要加点 结果 将两个文件打包在一起 结果 传入对象 并且单独打包 name为key 加上本次打包的hash has ...

  4. EasyUI DataGrid 基于 Ajax 自定义取值(loadData)

    为 datagrid 加载数据分两种情况: 一种是基于 Ajax 请求获取数据然后通过"loadData"方法来赋值: 另一种是直接使用 datagrid 自带的"loa ...

  5. vue-cli 自定义指令directive 添加验证滑块

    vue项目注册登录页面遇到了一个需要滑块的功能,网上看了很多插件发现都不太好用,于是自己写了一个插件供大家参考: 用的是vue的自定义指令direcive,只需要在需要的组件里放入对应的标签嵌套即可: ...

  6. vs2012建一个空解决方案添加以前老版本的Web项目调试弹出window安全

    解决方法:NTLM身份验证去掉就行.

  7. javascrip实现:若选中TreeView的父节点checkbox,则其子节点全部选中;子节点全部没选中,则父节点也会没选中。

    <script type="text/javascript"> function public_GetParentByTagName(element, tagName) ...

  8. APP在模拟器崩溃,提示__gcd_queue_item_enqueue_hook_block_invoke

    libBacktraceRecording.dylib`__gcd_queue_item_enqueue_hook_block_invoke: libBacktraceRecording.dylib` ...

  9. Nodejs.安装.非源码方式安装Node.js (Centos)

    已验证的适用环境: Centos6.x 树莓派官方ROM(Raspbian) 先去官网下载已编译好的安装包 https://nodejs.org/en/download/current/​ 以Cent ...

  10. <c:forEach items="${list}" var="tt" varStatus="status"> 的相关大小长度

    <c:forEach items="${list}" var="tt" varStatus="status"> ${status ...