业务逻辑与数据访问

业务逻辑层需要访问数据库来完成相关的功能。在业务逻辑层的类中直接写访问数据库的语句给人的感觉代码不简洁,加大了业务逻辑与数据库的耦合度。考虑采用在类与数据库中的表间建立一一对应的映射关系,由这些类负责数据库的访问,完成业务逻辑的类调用这些类实现数据库访问,但是感觉这个方法不灵活,尤其是需要同时访问多张数据表、业务逻辑非常复杂时(如查询),并且代码的执行效率也不高。如何处理业务逻辑与数据访问的关系,成熟的解决方案(模式)是什么,恳请各位高人赐教。

两种方法:
方法1. 使用容器管理下的EJB
方法2. 使用DAO模式

优点:
都能够将逻辑与数据访问分离
方法1. 能够使用EJB带来的种种好处
方法2. 开发起来简单

缺点:
方法1. 开发人员要求比较高
方法2. 增加一层的类----工作量

推荐第一种方式,DAO模式我不主张使用,它有特定的前提条件,所以才叫它模式,模式使用不当带来很大坏处。

而使用容器管理下的EJB就是CMP,这不是模式,是一种实在规范,在CMP中使用CMR实现数据库关系是一个趋势,建议参考pet store中的 个人资料 方面的CMP代码,其中就有一个customer中带个人地址的一对一关系。