DTO / VO 개념

세피·2021년 5월 19일
0

스프링

목록 보기
1/11

모델에는 Service와 DTO와 DAO로 분류된다.

Controller - View(클라이언트)로부터 어떤 요청을 받으면 Service 에게 일을 시키고 받은 내용을 다시 View 에게 전달
Service - Controller 로 부터 받은 일을 수행하고 결과를 알려준다.(그런데 DB 를 사용할 작업이면 DAO 에게 맡긴다.)
DAO - Service 로 부터 받은 처리내용을 DB 에 붙어서 처리
DTO - 데이터를 길어나르는 그릇

-Service

-DTO(Data Transfer Object)
각 클래스간에 서로 주고 받는 데이터의 형식
입력 해야하는 data의 집합 object , 전송의 최소단위
데이터 베이스의 테이블(Entity)에 해당하는 객체로 테이블의 컬럼들을 일대일로 저장할 수 있는 필드가 있고, getter/setter 메서드를 갖는다.

규칙
1. private 으로 필드를 선언 할것
2. DB 의 컬럼과 이름을 같이 할 것

-DAO(Data Access Object)
DB를 사용해 데이터를 조회, 조작
데이터 베이스에 관련된 작업(CRUD - Create, Retrive, Update, Delete *SQL DML+Select)을 전문적으로 담당하는 객체이다.

클래스의 멤버 변수를 public으로 선언하면 접근이 제한되지 않으므로 정보의 오류가 발생할 수 있다.

정보 은닉(Encapsulation)

캡슐화시키다 = 같은 클래스끼리만 접근 가능

외부에서 클래스 내부의 정보를 접근하지 못하도록 변수에 private 키워드

접근 제어자(access modifier)

변수, 메서드, 생성자에 대한 접근 권한을 지정한다.

  • public : 외부 클래스 어디에서나 접근 가능
  • protected : 같은 패키지 내부와 상속 관계의 클래스에서만 접근 가능
  • 아무것도 없는 경우 (기본 접근 제어자) : 같은 패키지 내부에서만 접근 가능
  • private : 같은 클래스 내부에서만 접근 가능

getter, setter

get(), set() 메서드

private 변수를 외부에서 접근하게 하려면 public 메서드를 제공한다.

값을 얻는 get() 메서드를 getter, 값을 지정하는 set() 메서드를 setter라고 한다.

외부 클래스에서 private 멤버 변수에 직접 접근할 수 없지만,

public 메서드인 setter를 활용하여 값을 대입할 수 있다.

VO(Value Object)란?
DTO와 VO는 엄연히 다르다

  1. VO에는 getter만이 존재한다.

  2. DTO와 같이 데이터만 가지고 있지만 value가 같으면 같은 객체라고 본다.

    Company a = new Company("대기업"); Company b = new Company("대기업");

    a.hashCode(); b.hashCode();

  3. read-only, 변하지 않음, 값 수정x

================================================================

**갑자기 hashcode 설명

Object 클래스(모든 클래스는 Object를 상속 받게 되어있으니 당연한 소리)의 메소드인 hashcode

hashcode와 equals는 비슷하므로 이 두 개념을 같이 묶어서 설명

equals는 값을 비교한다.

== 는 객체 인스턴스의 참조값(주소값)을 비교한다.

hashcode는 각 객체에 대응되는 고유한 정수값을 리턴(주소값)

**여기서 또 참조변수와 기본타입변수 개념이 등장한다.

기본타입변수 = int,char,long , 변수에 값 저장

참조타입변수 = String , 값을 저장하는게 아니라 주소를 저장한다.

그래서 hashcode가 뭔데?

  • 객체의 주소를 int로 변환해서 반환 (객체의 지문)
  • equals를 오버라이딩하면 hashcode()도 같이 오버라이딩해야 한다.
  • equals의 결과가 true인 두 객체의 해시코드는 같다.

객체의 지문이라면서 어떻게 true가 나오느냐!!! -> 오버라이딩을 이용하면 그특성이 지워짐

**오버라이딩이란?

덮어쓰다, 상속받은 조상의 메서드를 자신에 맞게 변경하는 것

내용만 변경가능

profile
세피의 블로그입니다

0개의 댓글