微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

向JPA实体添加业务逻辑

如何解决向JPA实体添加业务逻辑

在下一个场景中,我必须将一些具有JPA规范的静态过滤器(添加WHERE子句)应用于JPA实体,以获取经过过滤的狗的列表,例如,我从一个实体接收到一个ID,因此我必须应用相同的过滤器,但未完成的每个过滤器都会发送错误消息。例如:拥有实体Dog,我收到一个ID,并通过JPA获得该实体,并应用某些过滤器,例如dog age> 3 years,等等...

我的想法是重用JPA规范以执行此操作,但是使用它们不会给我有关为什么我不获取实体以及未完成哪个过滤器以发送错误消息的信息。

我所做的是向JPA实体添加诸如isDogOlderThan3Years()之类的方法,并且该实体本身要求其属性,等等。我认为这与非贫血的实体有关。这是一个好/坏的解决方案吗?有更好的吗?

谢谢

解决方法

我认为specification pattern在这里可能会有用。

您可以使用Visitor pattern将规范组成转换为JPA查询,并且可以实现上一篇文章中讨论的remainderUnsatisfied操作,以找出给定的候选人不符合哪些条件。

如果您不关心关注点分离,则可以直接在规范上实现toJpaFilterdescribe等方法

我在我的一个项目中使用了这种方法,在该项目中,我设法重复使用相同的规范来执行以下操作,并且效果很好:

  • 定义复杂的访问控制规则和过滤器
  • 定义并执行业务规则
  • 生成规范的用户友好描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。