2010-02-15 4 views
6

JPA 구현물로 DataNucleus를 사용하여 웹 응용 프로그램에 클래스를 저장합니다. 나는 모두 toDTO()fromDTO()을 가진 컨버터를 사용한다.JPA로 DTO 변환 엔터티

  • 내가 게으른로드, 컨버터가 모든 필드에 액세스하려고, 다음로드됩니다 경우는 (매우 결과 :

    내 문제는 내가 와이어를 통해 전송되는 전체 DB를 피하려는입니다 열망하는로드).

  • 게으름로드하지 않으면 사용자가 그룹을 포함하고 그룹에 사용자가 포함되어 있으므로 DB의 상당 부분을 차지하게됩니다.

명시 적으로 일부 필드를로드하고로드 된 클래스에 다른 필드를 NULL로 남겨 둘 수있는 방법이 있습니까? DataNucleus 워드 프로세서를 사용해 보았습니다.

답변

3

DTO가 너무 세밀합니다. 즉, JPA 엔티티 당 DTO를 가질 계획은 없습니다. DTO를 사용해야 할 경우, 좀 더 거칠게 만들고 수동으로 구성하십시오.

최근에 우리는 "DTO에 DTO 또는 DTO하지 말 것"즉 "다시 토론"이라는 질문을했습니다. 그들 (특히 JPA 응용 프로그램의 컨텍스트에서)에 대한 요구 사항은 더 이상 존재하지 않지만 DTO에 대한 인수 중 하나는보기가 더 까다로운 데이터 요구 사항을 갖는 경향이 있습니다.

+0

각 뷰에서 사용할 DTO 집합을 의미합니까? 사용자 그룹과 같은 것을 알 필요가없는보기를 보내기 위해 "그룹"필드가없는 사용자와 마찬가지로? – WhyNotHugo

+1

정말 응용 프로그램과 어떻게 설계하고 있느냐에 따라 달라집니다. 웹 애플리케이션이라는 것에 대해 이야기하지만 같은 호흡에서 전선을 통해 전송되는 것에 대해 우려하고 있습니다. 무슨 철사? appserver와 데이터베이스 사이의 와이어 또는 뷰와 모델/컨트롤러 레이어 사이의 논리적 와이어 또는 브라우저 AJAX 호출과 서버 간의 와이어? –

+1

주로 브라우저와 서버 사이의 전선이지만 DB를 줄이고 싶습니다. <-> 자바 서버 데이터도 trasmited가됩니다 ... 모델을 변환 할 때부터 게으른 로딩과 뷰 당 하나의 dto를 사용하는 것이 좋습니다. 실수로 불필요한 데이터를 게으르게로드하지 않으며보기에 필요한 데이터 만 전송합니다. 더 많은 일 (많은 수업)이지만 선택의 여지가 없습니다. 감사. – WhyNotHugo