最近在Review我自认为得意的数据基线生成代码的时候,发现了一些使用jdbc的问题,而这些问题都是在Rod JohnSon大牛在《expert one on one……》书中所阐述到的,实在是羞愧
。
由于使用的是hsqldb数据库,并且数据库都是动态生成的,无法使用Hibernate这样的工具来进行ORM配置,需要使用JDBC来完成表结构的建立,数据的存储,查询等操作。
这里运用的时候主要出现了几个问题:

由于使用的是hsqldb数据库,并且数据库都是动态生成的,无法使用Hibernate这样的工具来进行ORM配置,需要使用JDBC来完成表结构的建立,数据的存储,查询等操作。
这里运用的时候主要出现了几个问题:
- rs. ps用完了之后没有调用close()方法。
- 父类传输给子类的是Connection,不应该直接将Connection传输给子类,而是应该对该Connection进行封装,比如说做一个ConnectionWrapper,不提供Connection的close()方法,这样就能保证子类不会关掉该数据库的连接,或者把connection置为null了。
- Template方法中提炼的Template模板方法的粒度还有问题。在子类中出现了很多对rs,ps的操作,而这些操作如果粒度划分合适的话,可以在父类中实现。子类不用操心JDBC的存储和查询操作。
- Template所遵循的Workflow会有一些挂出点,每个子类可以根据需要选择遵循那个workflow。目前的做法是在Template中将可选的Workflow方法写好,然后子类去覆盖选择方法。如果更好的话,用Callback方法似乎更好一些。