2012-04-21 2 views
2

Java EE 환경의 엔티티 bean이 빈혈로 간주된다는 것을 알려주는 여러 기사를 읽었습니다 (동작을 구현하지 않고 getter 및 setter 만 포함한다는 것을 의미).엔티티 bean이 빈혈로 간주되는 이유는 무엇입니까?

어떻게 행동을 엔터티 빈에 넣을 수 없습니까? 따라서 세션빈 (stateless 또는 stateful)은 모든 비즈니스 로직을 그들에게 위임 할 수 있습니다 (논리가 엔티티 소유 일 수 있음).

엔티티 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은 그렇지 않으므로 엔터티에 코드를 추가하면 응용 프로그램이 예상대로 작동하지 않을 수 있습니다.

관련 문제