泛型DAO与泛型Service

时间:2023-03-09 20:22:13
泛型DAO与泛型Service

泛型Dao与Service

看了几个帖子,泛型Dao与Service的主要目的就是要减少重复代码。具体的说明如下:

1. 定义一个BaseDao接口,此接口包含了一些通用的DAO操作,例如:增加、删除、更新、根据Id查找对象等

2. 创建一个BaseDaoImp实现BaseDao接口,分别实现上述的几种通用方法

3. 定义一个BaseService接口,此接口包含一些对应DAO的操作

4. 创建BaseServiceImp实现BaseService接口,该类组合BaseDaoImp,通过@Resource注入。

5. 创建针对某个业务的Service接口,例如:WorkOrderService接口,该接口继承BaseService接口

6. 创建WorkOrderServiceImp类,该类继承BaseServiceImp

写个Demo程序,应该是没有问题的。但在实际业务场景中,DAO层比较稳定,基本上围绕着这几个操作:CRUD。如果我们遵循SRP原则,DAO层应该是只针对某一个对象的操作。但我们还是要考虑DAO层发生变化的情况。

更多的变化应该在Service层,所以,Service层是不稳定的。例如:针对订单的操作和针对用户权限的操作会有比较大的差异。

Service层可能会组合多个Dao对象,所以个人觉得Service层可以在一开始的时候不进行泛型化,如果后面确实在Service出现了大量的重复代码,再考虑重构。不然,可能会卷入到不应该的复杂中。