I'm not sure I understand the different approaches being compared here. Are you opposing 1 and supporting 2?
1. HatsService with methods .get_hats(), .throw_hats()
2. wearable_hats = db.query(Hats).map(hat => WearableHatDto(hat)
throwable_hats = db.query(Hats).map(hat => ThrowableHatDto(hat)