2

我阅读了几篇文章,告知 Java EE 环境中的实体 bean 被认为是贫血的(意味着只包含 getter 和 setter 而没有实现行为)。

是什么阻止我将行为放入实体 bean 中?因此,会话 bean(无状态或有状态)可以将所有业务逻辑委托给它们(对于由实体拥有的逻辑有意义)。

我不明白为什么实体 bean 一定是贫血的。

4

2 回答 2

2

在实体 bean 上实现功能没有任何限制,但它们并不打算在整个应用程序中使用,因此大多数时候您将添加修改会话 Bean 上的实体的行为,只是因为会话 Bean 应该从以前端为例。

如果我们更深入一点,会话 bean 方法通常带有事务性和安全性方面,而实体 bean 则没有,因此如果您将代码添加到实体中,您的应用程序可能不会以预期的方式运行。

于 2012-04-21T22:51:23.237 回答
2

从纯语义的角度来看,您会期望 ENTITY bean 是实体及其属性的表示。如果您将此与一些逻辑结合起来,那么您将为您的实体类添加额外的责任。正如我们从 Curly 定律或单一责任原则中知道的那样,每个类应该做一件事,而且只做一件事:

http://www.codinghorror.com/blog/2007/03/curlys-law-do-one-thing.html

http://en.wikipedia.org/wiki/Single_responsibility_principle

如果你认为你有足够的理由违反这个原则,你可以,但根据我的经验,没有理由足以违反标准的软件工程实践,特别是如果你像我一样相信软件的质量最好的体现是其代码的质量。

于 2012-04-21T22:49:03.443 回答