DAO的一个问题
DAO都知道了吧,就是数据访问对象。这里考虑的是数据访问层的实现。
最早的思路是一个数据库表对应一个DAO,实际中也是这么实现的。不过后来发现,这样还是存在问题的,因为每次的CRUD操作都会打开和关闭数据库连接,性能会受到影响;而且,每个原子操作不一定都是针对一个表,涉及到事务处理。
最初的折中解决办法就是把DAO类中的每个方法都加一个相应的方法,参数比原来的参数多一个conn的数据库连接,然后在需要的时候,在DAO类的外面用一个事务类,事务类提供数据库连接对象,然后在DAO类之上的一个类,调用不同的DAO中的方法(使用暴露CONN的方法),全部成功的话就commit,否则rollback。
虽然问题暂时得到解决了,但总感觉不OO。比如DAO必须暴露conn参数,事务类中掺入了数据库连接对象。比较不爽。