从零开始学后端(4)——JDBC的重构设计

重构(Refactoring)就是通过调整程序代码,改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

问题1:每个DAO方法中都会写:驱动名称/url/账号/密码,不利于维护.

这里写图片描述

这里写图片描述

此时DAO代码:

这里写图片描述

此时DAO代码:
conn = JdbcUtil.getConn();

问题4:我们分析右图JdbcUtil类中的getConn方法的代码,发现,每次调用getConn方法都需要加载注册驱动,而我们其实就只需要在最初加载一次即可.

解决方案:在静态代码块中去加载和注册数据库驱动即可.

这里写图片描述

关闭DML操作资源:JdbcUtil.close(conn,st,null);
关闭DQL操作资源: JdbcUtil.close(conn,st,rs);

问题6:在JdbcUtil类中提供了四个字段分别表示连接数据库的四要素(驱动类名,URL,账号,密码),存在硬编码,如果需要修改连接的数据库,就只能来修改该源代码.

这里写图片描述

接下来再通过Properties类来加载资源文件,并读取其中的信息即可.

这里写图片描述

问题7:在DAO方法中拼接SQL语句,很恶心,稍后使用PreparedStatement解决.
问题8:在每一个DAO方法中都创建一个新的Connection对象,使用之后,就立刻释放了,也就是说没有充分利用Connection对象,而创建Connection对象的成本非常大,
问题9:DML操作模板是相同的,DQL操作模板也是相同的.

预编译语句对象

这里写图片描述

这里写图片描述

这里写图片描述

预编译语句对象 VS 静态语句对象

Statement和PreparedStatement的区别:
PreparedStatement 的优点:
1).PreparedStatement 代码的可读性和可维护性. (SQL模板,使用占位符表示参数)
2).PreparedStatement 能最大可能提高性能(预编译),MySQL不支持PreparedStatement的性能优化.
3).PreparedStatement 能保证安全性.
可以防止SQL注入:演示登陆操作
选择:使用PreparedStatement.

这里写图片描述

这里写图片描述

从零开始学后端(4)——JDBC的重构设计

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树使用JDBC操作数据库JDBC概述91432 人正在系统学习中

来源:伯努力不努力

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年7月3日
下一篇 2018年7月4日

相关推荐