例如,我有很多表格,例如people
car
house
等等,我想知道一般DAO设计的良好做法。
在这种情况下,people
有cars
和houses
。 car
和house
拥有自己的id,也许是auto_increment int值。它们还有一个外键userId
,它是user
的PK。
第一步,我设计了一个GenericDao
来为所有表提供基本的CRUD功能。
然后呢?
我需要为用户A查找所有汽车,因此我需要CarDao
功能findAllCarsForUser(int userid)
,其中也可能有findCarsByName(String name)
和findCarsByNameForUser(String name, int userid)
等等。
对于House
,需要相同的HouseDao
。如果人们有其他类型的东西,每个人都应该有ObjectXXXDao
。
但是对于上层,XXXDao
是否应该暴露给他们?
我认为不应该这样,因此每个DAO
都有一个包裹Service
类,例如CarService
HouseService
等等。但是对于这些服务类中的函数,可能只有语句return XXXDao.findCarsByNameForUser()
。没有或只有很少的附加功能被添加到服务类。
或者应该向此XXXservice
图层添加哪些功能?
如果有加入Car
和House
表的要求,则可能需要CarHouseDao
和CarHouseService
。
我想知道,这是一个普通DAO的好设计吗?如果没有,是否有任何好的建议或例子?