2014-09-22 4 views
0

다른 레이어간에 데이터를 이동하는 방법에 대한 아이디어가 필요합니다. 보통 각 레이어마다 POJO가있는 곳을 계획하고 있습니다.다른 레이어간에 빈 전달

  formPojo      controllerPojo    servicePojo   
     ===============>    ================>   =============> 
Form/UI     Controller      Service     Dao 
     <===============    <===============   <============ 
     controllerPojo    servicePojo     dbPojo 

주요 단점은 필드가 동일하고 변환이 필요하지 않습니다. 네 가지 다른 pojo 유형 (* Pojo)이 필요합니다. 따라서 내 질문은 다음과 같습니다.

  1. 레이어간에 데이터를 전송하는 적절한 방법은 무엇입니까?
  2. 나는 이들 각각이 Model, DTO, Domain과 같은 적절한 이름을 가지고 있다고 확신한다. 위 다이어그램에 따라 어느 것을 설명해 주시겠습니까?

감사

그것은 당신이 프레임 워크로 사용에 따라 달라집니다
+2

POJO는 Plain Old Java Object를 의미하며 데이터 전송 객체에서와 마찬가지로 DTO를 의미합니다. – Smutje

+1

서로 다른 레이어에서 하나의 DTO를 공유하는 것이 충격적이지 않을 것이라고 생각합니다. 단순하게 생각해보십시오. 복잡한 "변화를위한 디자인"아키텍처를 구축하는 것이 항상 최선의 해결책은 아닙니다. 저는 종종 "YAGNI"(http://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it) 방식으로 코딩하는 것을 선호합니다. – Joel

답변

0

. 예를 들어 Spring MVC에서는 데이터 바인딩과 전송을 위해 객체와 Model 객체를 사용할 수 있습니다. 일반적으로 이러한 개체는 서로 대칭 이미지가 아닙니다.

이러한 개념을 읽는 것이 좋습니다. 스프링 특정 구현의 경우 봄 MVC 문서 (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html)를 참조하십시오.

이 부분을 좀 더 자세히 설명하고 싶습니다. 애플리케이션 개발자로서의 경력을 통해 이러한 개념을 실행하게됩니다. 서로 다른 계층에 대해 서로 다른 객체를 만드는 측면에서 우리는 계층을 분리하고 데이터를 분리하는 최선의 방법을 결정할 때마다 끊임없이 직면 해 있습니다. 이 권리를 얻는 것이 중요하며 다행히 도울 수있는 도구가 있습니다.

그러나 먼저 프레임 워크와 컨테이너에서 제공하는 내장 된 효율성을 활용하기 위해 제공된 메커니즘을 이해해야합니다. 따라서 속성과 메소드의 자동 탐지를 허용하는 Java Bean 규칙을 이해한다.

매퍼가 있습니다. 예를 들어 데이터 객체를 가져 와서 그 내용 중 일부를 페이지 객체에 넣고 싶습니다. Dozer 나 ModelMapper와 같은 것을 사용하여 두 객체간에 데이터 전송을 처리 할 수 ​​있습니다. 이는 필요에 따라 간단하거나 복잡 할 수 있습니다.

물론이 도구를 사용하면 도구가 제공하는 아이디어를 쉽게 배울 수 있지만 도구가 사용자의 방식에 영향을 줄 수 있으므로 이러한 도구가 있다는 것을 알고 있어야합니다.

+0

도메인 객체, 모델 객체 및 데이터 전송 객체의 차이점이나 정의에 대한 논의는하지 않았습니다. 이것은 적용 가능성에 따라 다르게 사용될 수 있기 때문입니다. 항상 하나의 대답은 아니며 종종 중복됩니다. 그런 다음 불변성, 정체성 등과 같은 다른 개념들이 떠오른다. – TechTrip

관련 문제