たとえば、私は多くのテーブルを持っていpeople
car
house
ます。一般的な DAO 設計の良い方法を知りたいです。
この場合、 とpeople
がcars
ありhouses
ます。独自のID、おそらくauto_increment int値car
を持っています。また、 の PK であるhouse
外部キーも持っています。userId
user
最初のステップとして、GenericDao
すべてのテーブルに基本的な CRUD 機能を提供するように設計します。
その後?
ユーザー A のすべての車を検索する必要があるため、withCarDao
関数findAllCarsForUser(int userid)
が必要です。については、同じものが必要です。人々が他の種類のものを持っている場合、それぞれに.findCarsByName(String name)
findCarsByNameForUser(String name, int userid)
House
HouseDao
ObjectXXXDao
しかし、上位層の場合、XXXDao
それらにさらされる必要がありますか?
私はそうすべきではないと思うので、すべてDAO
がラップされたService
クラスなどを持っCarService
HouseService
ています。ただし、これらのサービス クラスの関数については、おそらく statement のみreturn XXXDao.findCarsByNameForUser()
です。サービス クラスには追加機能がまったく追加されていないか、ほとんど追加されていません。
XXXservice
または、このレイヤーにどのような機能を追加する必要がありますか?
Car
andテーブルに参加するための要件がある場合はHouse
、おそらくCarHouseDao
andCarHouseService
が必要です。
知りたいのですが、これは一般的な DAO にとって適切な設計ですか? そうでない場合、良いアドバイスや例はありますか?