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