gpt4 book ai didi

java - 在实体 Bean 中使用无状态 EJB bean

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:19 25 4
gpt4 key购买 nike

显然,在实体 bean 中使用无状态 EJB bean 有异味,但请考虑以下场景,如果您知道更好的解决方案,请告诉我:

  1. 我有一个 InvoiceTemplate 实体 Bean,字段为 NextInvoiceDate
  2. 生成 NextInvoiceDate 是一个复杂的过程,应该在 InvoiceTemplate 类之外执行
  3. NextInvoiceDate 应在每次 InvoiceTemplate 存储到数据库时更新

现在我有关于 @PrePersist @PreUpdate 实体中 NextInvoiceDate 生成的逻辑 InvoiceTemplate 实体 bean 。逻辑越来越复杂,我想把它移到 InvoiceTemplate 实体 bean 之外。在我看来,应该有一个服务来计算 NextInvoiceDate。但是从 InvoiceTemplate 内部调用此服务是否正确?

最佳答案

这不是那种味道 - 它是一种倾向于领域驱动设计的倾向。

我不知道有什么方法可以自动执行此操作,但您可以:

  • 在您处理Invoicetemplate 的 session bean 中,注入(inject)具有计算下一个日期逻辑的 helper bean
  • 在实体上创建一个带有 setter 的私有(private)字段,并在开始使用它之前调用 entity.setNextDateHelper(..)

您还可以检查是否AspectJ不提供某些 EJB 选项,因此您可以在创建给定类型 (InvoiceTemplate) 的实体时注入(inject) EJB。 AspectJ 和 spring bean 一样工作,我不知道 EJB 是否有这样的选项。

关于java - 在实体 Bean 中使用无状态 EJB bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3699865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com