Spring 实体 getter 中的简单逻辑?

Simple logic in Spring Entity getter?

我有一个 User 实体,它与 UserSkill 实体具有一对多关系。 UserSkill可以是activeinactive(inactive是在技能删除时设置的,而不是完全删除)。问题是,大多数时候主动技能对最终用户很重要(不活动可能稍后用于统计目的)。考虑到这一点,当我从数据库中查询 User 实体时, 大多数时候我只想通过它访问 active 技能 .

我的问题是,哪个实现更好:

  1. 我有 getUserSkills(简单 getter)和 getActiveUserSkills(getter 在 User 实体上进行一些过滤),然后使用 getActiveUserSkills 大多数时候。 (大家好像一直在说POJO就应该是POJO,没有多余的逻辑。)
  2. 我有userSkillService,而且我有 getActiveUserSkills(User user) 方法,其中 returns 仅激活 用户技能。然后,我会在需要时将这些主动技能与 User 一起使用。这里的问题是每次 我得到了User,我将拥有那些不必要的非主动技能。

也欢迎提出其他实施建议。谢谢!

当然第一种方案更好。当实体可以简单地提供信息而不需要任何额外的依赖时,就没有理由使用服务。

如果您需要访问存储库或其他服务以确定哪些技能处于活动状态,则使用外部服务会很有用(因为您通常不希望您的实体层依赖于服务和存储库)。因此,如果加载所有技能导致性能或内存问题,我会说使用服务或存储库方式,而您只想执行查询以仅获取众多技能中的少数活动技能。但这里似乎不是这样。