2014-12-28 2 views
1

J2EE 설계에서 일반적으로 뷰 계층, 비즈니스 계층 및 DAO 계층이 있습니다. 비즈니스 계층에서 다른 데이터가 필요할 경우 직접 DAO를 호출하거나 다른 데이터의 비즈니스 서비스를 호출해야합니까?비즈니스 계층 비즈니스 계층 호출 또는 DAO 직접 호출

비즈니스 계층이 Componenents에서 구축되어야한다 (I :

+0

이것은 백만 달러의 질문입니다. 응용 프로그램의 크기가 배포되는 방식과 사용중인 DAO의 유형에 따라 달라집니다. 나는 이것이 너무 넓어서 시스템 디자인 서적을 보는 것이 좋습니다. –

답변

1

은 내가 ... 다른 사람을 설득 나중에 답을 찾아했다 그래서 내보기, 일부 프로젝트에 경험에서 오는 있기 때문에,이 질문을 좋아한다 그 (것)들에게 Facades를 지명 할 것입니다) 어떤 업무에 책임있는. 예 : 몇 가지 기본적인 비즈니스 설정 (프리 필드 국가, 통화 새로운 객체를 반환이 지속되기 전에 (DAO를 호출)

  • 검증 엔티티/객체 (Persist(entity)의 종류)
  • 또는 대표 팩토리 메소드 CreateNew() .. . Find(filter)

내가 계속할 수 있지만, 마지막에, 정말 자신의 작업을 수행하고 책임이있다 외관, 끝낼 것를 통해)

  • 부하 일부 데이터. 그것은 우리가 답을 가지고 있음을 의미합니다.

    이미 일부 특정 작업을 나타내는 몇 가지 비즈니스 오브젝트 (외관)이 있다면 ... 다른 비즈니스 componenets 그것을 사용해야합니다. 그들은 그것을 다시 구현해서는 안됩니다. ,

    • 다른 층 (프리젠 테이션, 예약 된 작업)이 비즈니스 서비스/외관이 일을해야
    • 하나의 비즈니스 API (서비스/외관)를 호출해야합니다

      명시 적으로 명확하게 말하려면 필요한 경우 다른 비즈니스 서비스/외관 (Facade (s))에 전화하여 업무를 수행하도록 요청해야합니다.

    • 다른 서비스가 이미 구현되어있는 경우 해당 서비스가 DAO를 호출해서는 안됩니다.

    일부 BL 사람이 SI한다면, DAO에서 데이터를 얻거나 DAO에 다른 데이터를 전달 (및 확인) 할 준비가 ... 우리가 그것을 사용해야합니다 ... 끝에

    , 우리는 DRYSOLID 원칙을 가지고 있고 ... 코드는 유지 및 확장하기가 쉽습니다. 예를 들어, EmployeeFacade.Find(filter)이 하나만 있다는 것을 알고 있다면 AOP를 도입하고 모든 결과가 가로 챌 수 있다는 것을 쉽게 알 수 있습니다.

  • +1

    답변 해 주셔서 감사합니다. 당신이 표현 계층에서 호출 비즈니스 레이어에 대해 이야기하고 있다고 생각합니다. 제 질문은 비즈니스 계층에 있습니다. 다른 비즈니스 서비스의 메서드를 호출하거나 다른 DAO 메서드를 호출해야합니까? –

    +1

    더 명확하게 표현하기 위해 답을 업데이트하려고했습니다. 이미 비즈니스 계층 (서비스/Facade 하나)에 있더라도 이미 Busienss Services/Layers를 호출해야합니다. DAO를 직접 호출해서는 안됩니다 (이미 서비스가있는 경우). 그것은 나의 메시지, 나의 경험이다. 도움이 되나요? 지금은 더 명확한가요? –

    +1

    예, 선택을 취소하십시오. 나는 내 프로젝트에서 같은 것을 따를 것이다. –

    관련 문제