思考:
这个好几年前经常会被问到,为啥dao层要有个接口?service层掉dao 不直接掉,调用接口?记得当时有的说可以切换数据库,只要再写个实现啥的,其实也没有根本解决这个疑问。直到去年,我写了个小框架,才有些理解。
好处:
数据操作实现可扩展更改,有时候我们获取数据,比如一些配置,你定义了一个接口,默认读xml,这个可以,但是很多公司配置是有配置中心的,需要rpc调用或者其他操作,你如果写死,你的框架就不具备扩展性,满足不了需求,数据库方面,如果有一些业务,比如就一块数据量比较大的业务,有几个表或实体,想更换成其他数据库,mongdb或者hive,甚至redis(打个比方),有的公司确实一个项目会连多种数据库。。。
- 数据访问对象接口(Data Access Object Interface) - 就是定义了增删盖茶的接口
- 数据访问对象实体类(Data Access Object concrete class) - 实现了数据访问对象接口,可以是mybatis的mapper,也可是JDBC,等实现,甚至读取xml
- 模型对象/数值对象(Model Object/Value Object) - 实体类 get set
总结:
有的时候遇到过后,再回头会有新的感觉吧,程序还是那些程序,代码还是那些代码,少年却不是那个少年了。