读《架构探险》总结JDBC相关持久层代码优化策略

3 篇文章 0 订阅
1 篇文章 0 订阅

说明:eclipse创建的Maven web项目,读《架构探险》第二章,在JDBC方面由浅入深,这正是我一直需要的。

一、我的做法。

写一个DBConnection类,提供getConnection()、closeConnection()方法,MySQL配置信息同样写在这个类里,然后在static代码块里Class.forName("com.mysql.jdbc.Driver")加载JDBC驱动。

然后,这个类伴随我好久,可以复制到其他地方,直接修改url就可以了,但是在持久层里,免不了建立新的Connection,Statement,ResultSet,还需要手动关闭Connection,Statement,ResultSet,还需要使用try-catch异常处理,很不方便,特别是在弄一个较大数据量的数据表查询更新操作时,数据库限制了获取连接的数量,导致运行失败。

二、这本书作者的做法总结。

1.第一阶段。

main/java/resources下建立config.properties配置MySQL

main/java/util下建立PropsUtil.java可以读取配置文件,通过Properties对象的getProperty("jdbc.username")获取配置信息

mian/java/service下的CustomerService.java提供Customer的增删改查,在这里建立static代码块通过PropsUtil.java加载配置信息和JDBC驱动,在getCustomerList()里通过DriverManager获取Connection,然后通过新建PreparedStatement、ResultSet获得数据集,再通过whihle(rs.next())遍历新建Customer,最后返回customerList。

2.第二阶段。

main/java/helper下建立DatabaseHelper.java,把原来CustomerService.java里的static代码块剪切到DatabaseHelper.java,并提供getConnection()方法,获取Connection对象,提供closeConnection()方法,关闭Collection。CustomerService.java使用DatabaseHelper提供的getConnection()获取Connection,仍然需要通过PreparedStatement,ResultSet获取数据集,通过while遍历并新增Customer到customerList。

3.第三阶段。

使用Apache Commons DbUtils提供的QueryRunner对象,在DatabaseHelper里新增queryEntityList()方法,只要提供Customer类的类类型和sql语句就能获取对象列表,该类能够组装sql语句并进行查询,包含反射、泛型两个概念。

4.第四阶段。

使用ThreadLocal管理Connection,通过提供对象的副本,“以空间换安全”策略,隐藏了Connection的创建和关闭。

5第五阶段。

使用Apache DBCP数据库连接池,就不在需要closeConnection(),解决最原始的不断新建、关闭Connection的操作。

三、总结

第三阶段使用DbUtils是简化代码的一大进步,最终实现了书中在CustomerService.java里两三行代码实现对象的增删改查。

内心立下个小目标:以后再也不自己创建Statement和ResultSet了,自己应该也可以写一个类似DbUtils的组装sql语句的方法,有空要尝试一下。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值