2012-04-21 7 views
2

Java EE環境のエンティティBeanが貧血と見なされることを通知する記事をいくつか読んでいます(動作を実装せずにgetterとsetterのみを含むことを意味します)。エンティティBeanがなぜ貧血であると考えられるのですか?

エンティティBeanにビヘイビアを配置できないのはなぜですか?そのため、セッションBean(ステートレスまたはステートフル)はすべてのビジネスロジックを委譲できます(エンティティが所有するロジックを意味するため)。

なぜエンティティBeanが必然的に貧血であるのかわかりません。

答えて

2

純粋な意味論的観点からは、ENTITY Beanがエンティティとその属性の表現であると期待します。これをいくつかのロジックと組み合わせると、エンティティクラスに追加の責任が追加されます。我々はカーリーの法則や単一責任の原則から知っているように、各クラスには、一つのことだけ一つのことを行う必要があります:あなたは十分に強い理由を持っていると信じている場合は

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

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

この原則に違反していますが、私の経験では、標準のソフトウェアエンジニアリングの慣行に違反するほど強力な理由はありませんでした。特に私のように、ソフトウェアの品質がコードの品質によって最もよく表されると信じています。

2

エンティティBeanに機能を実装するのに制限はありませんが、アプリケーション全体で使用するためのものではありませんので、Session Beansが想定されているからといってSession Beanのエンティティを変更する動作を追加することがほとんどです例えば、フロントエンドからアクセスされる。

エンティティBeanはそうではないが、セッションビーンメソッドはトランザクションやセキュリティの側面で装飾されているため、エンティティにコードを追加した場合にアプリケーションが期待通りに動作しないことがあります。

関連する問題