DTO와 DAO 개념과 MVC [폐쇄]


133

1) 우리는 왜 사용합니까 DTO하고 DAO, 우리는 그들을 때를 사용해야합니다. GUI데이터 삽입, 편집, 삭제와 관련된 Java 소프트웨어를 개발 중 입니다. 그러나 나는 구별 할 고군분투 DTO/DAOModel, View, Controller(MVC) 구조? Java를 통해 데이터베이스와 상호 작용할 때 사용하는 것이 더 낫습니다 GUI.

2) 나는 정말 궁금 한 점은이 좋은 연습입니다 여부 viewController하나 개의 클래스이다. 에 대해 생각 Netbeans하면 GUI프레임 클래스를 만들고 프레임과 같은 구성 요소를 추가 할 수 있습니다 JButton. 버튼을 두 번 클릭하면 actionListener데이터가 사용자에게 표시되는 프레임에있는 것처럼 보이는 메서드 (컨트롤러)로 이동합니다 (보기) . 그래서 그들은 같은 수업에 있습니다. 그것은 그 개념에 완전히 반대 되는가?

여기 내가 말하는거야

한 클래스에서 뷰와 컨트롤러를 사용하는 것은 나쁜 습관입니까?


@RomanC에는 이벤트 (eventId, name, date.etc)를 보유하는 데이터베이스 테이블이 있으므로 DTO와 MVC는 동일합니까?
Hoody

데이터베이스에는 DTO가 아니라 데이터베이스 개체가 있습니다.
로마 C

Java 클래스의 @RomanC가 죄송합니다. DTO / DAO 구조를 사용하거나 MVC를 사용해야합니까? 차이점은 무엇입니까
Hoody

읽는 이를 하고 있다는 차이 확인
로마 C

두 번째 데프에서 데이터베이스에 대해 읽었습니까?
로마 C

답변:


269

DTOData Transfer Object 의 약자 이므로 응용 프로그램의 클래스와 모듈간에 데이터를 전송하는 데 사용됩니다.

  • DTO 데이터, 게터, 세터 및 생성자에 대한 개인 필드 만 포함해야합니다.
  • DTO 이러한 클래스에 비즈니스 로직 메소드를 추가하지 않는 것이 좋지만 일부 util 메소드를 추가해도됩니다.

DAOData Access Object 의 약자 이므로 데이터 저장소 (데이터베이스, 파일 시스템 등)에서 데이터를 검색, 저장 및 업데이트하기위한 논리를 캡슐화해야합니다.

다음은 DAO 및 DTO 인터페이스의 모습에 대한 예입니다.

interface PersonDTO {
    String getName();
    void setName(String name);
    //.....
}

interface PersonDAO {
    PersonDTO findById(long id);
    void save(PersonDTO person);
    //.....
}

MVC넓은 패턴이다. DTO / DAO는 MVC 패턴의 모델입니다.
데이터 검색을 담당하는 부분 만이 아니라 전체 응용 프로그램을 구성하는 방법을 알려줍니다.

두 번째 질문에 관해서는 작은 응용 프로그램이 있으면 완전히 괜찮습니다. 그러나 MVC 패턴을 따르려면 별도의 컨트롤러 를 사용하는 것이 좋습니다.이 컨트롤러 에는 별도의 클래스에 프레임의 비즈니스 논리가 포함됩니다 이벤트 핸들러에서이 컨트롤러로 메시지를 발송합니다.
이렇게하면 비즈니스 논리가보기와 분리됩니다.


2
아마 나는 그 질문을 이해하지 못했다.
Petr

4
"별도의 컨트롤러"가 무슨 뜻인지 잘 모르겠습니다. 내 독서에서, MVC의 컨트롤러는 가능한 한 마른 체형이어야하고 비즈니스 로직은 모델에 캡슐화되어야합니다.
Paul Carlton

4
DTO를 사용하여 객체 모델을 인터페이스하는 것은 끔찍한 관행입니다. void save (PersonDTO person)는 순수한 암입니다.
Ben

3
POJO와 같은 클래스 객체가있을 때 왜 DTO가 필요합니까? 둘 다 동일하지 않습니까?
Bhargav 2016 년

3
@Bhargav DTO는 하나의 엔티티에서 여러 엔티티 (POJO) 또는 제한된 자원의 결합 결과를 리턴하는 데 사용됩니다.
TheCoder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.