参考答案:
【问题1】
数据库程序在线访问方式优点:
1、性能比ORM好
2、可以处理复杂查询语句
数据库程序在线访问方式缺点:
1、要求程序员懂SQL语句
2、修改与维护相对困难
ORM优点:
1、使用ORM可以大大降低学习和开发成本。
2、程序员不用再写SQL来进行数据库操作。
3、减少程序的代码量。
4、降低由于SQL代码质量差而带来的影响。
ORM缺点:
1、不太容易处理复杂查询语句。
2、性能较直接用SQL差。
本题中的场景之所以选择ORM,主要考虑的是程序员缺乏数据库开发经验,这样SQL语句质量有很大风险。同时学习成本很高。此外应用简单,不用担心ORM对性能的影响。
【问题2】
增加数据访问层的原因:
(1)由于涉及到多种异构数据库平台,数据访问复杂性增加,不宜与业务逻辑混合在一起。
(2)数据管理变复杂之后,需要使用的代码量增加,分单独层次有利于让逻辑更清晰。
(3)业务逻辑应以相同的方式应对异构的数据库,此时需要单独的数据访问层屏蔽差异性。
1)执行业务逻辑/业务组件/业务构件 2)数据访问接口层/DAL接口 3)工厂层/DAL工厂/数据访问工厂
【问题3】
工厂模式分抽象工厂与工厂方法,题目中的场景适合采用抽象工厂设计模式。
抽象工厂设计模式提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类。其优点是可以非常方便地创建一系列的对象,其使用场景也是创建系列对象的情况。在本题中,可以针对Oracle、MySQL、SQLServer分别建立抽象工厂,若指定当前工厂为Oracle工厂,则创建出来的数据库连接,数据集等一系列的对象都是符合Oracle操作要求的。这样便于数据库之间的切换。
详细解析:
一个更好的办法就是引入OR Mapping。实质上,一个OR Mapping会为你生成DAL。与其自己写DAL代码,不如用OR Mapping,你只需要关心对象就好。
使用ORM可以大大降低学习和开发成本。而在实际的开发中,真正对客户有价值的是其独特的业务功能,而不应该把大量时间花费在编写数据访问、CRUD方法、后期的Bug查找和维护上。在使用ORM之后,ORM框架已经把数据库转变成了我们熟悉的对象,我们将只需要了解面向对象开发就可以实现数据库应用程序的开发,不需要浪费时间在SQL上。同时也可减少代码量,减少数据层出错机会。