Spring JDBC注解

本文探讨了使用JDBC过程中常见的问题,如未正确关闭资源、不当传递Connection对象及Template方法设计不足等,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       最近在Review我自认为得意的数据基线生成代码的时候,发现了一些使用jdbc的问题,而这些问题都是在Rod JohnSon大牛在《expert one on one……》书中所阐述到的,实在是羞愧

       由于使用的是hsqldb数据库,并且数据库都是动态生成的,无法使用Hibernate这样的工具来进行ORM配置,需要使用JDBC来完成表结构的建立,数据的存储,查询等操作。
      
       这里运用的时候主要出现了几个问题:
  1. rs. ps用完了之后没有调用close()方法。
  2. 父类传输给子类的是Connection,不应该直接将Connection传输给子类,而是应该对该Connection进行封装,比如说做一个ConnectionWrapper,不提供Connection的close()方法,这样就能保证子类不会关掉该数据库的连接,或者把connection置为null了。
  3. Template方法中提炼的Template模板方法的粒度还有问题。在子类中出现了很多对rs,ps的操作,而这些操作如果粒度划分合适的话,可以在父类中实现。子类不用操心JDBC的存储和查询操作。
  4. Template所遵循的Workflow会有一些挂出点,每个子类可以根据需要选择遵循那个workflow。目前的做法是在Template中将可选的Workflow方法写好,然后子类去覆盖选择方法。如果更好的话,用Callback方法似乎更好一些。
        羞愧羞愧,昨天发生内存溢出问题,我第一想到的就是JDBC使用的问题。检查一下居然有这么多。Rod JohnSon关于JDBC的论述实在是经典,所设计的Spring JDBC框架有很多我可以学习的地方,希望吸取Spring JDBC Framework的精华,提高设计能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值