본문 바로가기
개발/JAVA

[JAVA] form, entity, dto 의 차이점

by 외노자개발 2022. 10. 31.
반응형

form과 entity와 dto의 차이


··· 외형의 차이는 없습니다.
정말로, 진짜로. 사용법이 다른 것만으로 내용은 (거의) 변하지 않습니다.
3개 모두 단순한 Bean입니다.

 

memberBean이란?

대체로 이런 느낌의 클래스입니다.
여러가지 프로퍼티가 있어, 그 프로퍼티에 대한 setter/getter 메소드를 가지고 있습니다.

public class MemberBean {
    private String name;
    private int age;

    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return this.age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

 

예에서는 클래스 이름을 "MemberBean"으로 지정하지만,

  • form의 경우: MemberForm
  • entity의 경우: Member
  • dto의 경우: MemberDto

 

form특징


 

  • HTTP의 POST 메소드로 전송된 값(=form 태그의 내용)이 들어 있다.
  • 그래서 웹 서비스 이외에서는 별로 사용하지 않는 것 같다.
  • form 태그의 내용이므로 Bean의 이름도 form・・・라고 기억해 두면 좋다고 생각한다.
  • 클래스명은 「xxxForm」이 되는 경우가 많다.

 

entity의 특징


  • DB에 등록·갱신하는 값을 넣어 둔다.
  • DB로부터 취득한 값을 보관 유지한다.
  • 클래스명과 테이블명은 대개 동일하게 되는 경우가 많다.

 

 

dto의 특징


  • Data Transfer Object의 약어가 dto.
  • 이름에서 알 수 있듯이 데이터 교환을위한 빈.
  • Form 클래스나 Entity 클래스의 값을 직접 편집하거나 하면, 원래의 데이터로 되돌릴 수 없는 경우가 있기 때문에,
    일단 Dto 클래스에 넣어 두고, 비즈니스 로직내에서 값의 편집등을 실시하거나 한다.

 

데이터 교환은 예를 들어 form에서 entity로 변환합니다.
예를 들어, form에서는 연/월/일과 입력을 분할하고 있습니다만, DB상에서는 생년월일을 Date형으로 가지고 있는 경우, 어딘가의 타이밍에 결합할 필요가 있습니다.
이 경우 form이나 entity를 직접 편집하면 뭔가가 있을 경우 원래 데이터로 되돌릴 수 없게 되는 경우가 있습니다.
그것을 피하기 위해서, 일단 dto에 넣어 두는・・・라고 하는 사용법을 합니다

 

 

요약


Form, Entity, Dto 클래스는 클래스의 구성으로서는 모두 같고,
그 용도에 따라 이름이나 역할이 다르다.

 

 

 

 

 

반응형

댓글