지난 게시글에 이어 오늘도 정리를 해보려고 한다.
지난 게시글 - @NoArgsConstructor, @AllArgsConstructor, @Data, @Builder
https://wanna-developer02.tistory.com/98
오늘의 목차는 아래와 같다
- DTO, DAO, VO
- TDD
- (숙제) 매핑테이블을 사용하는 이유
1. DTO, DAO, VO
원래 DTO와 DAO 만 정리하려 했는데 조사하다보니 VO도 관련있는 거 같아 함께 정리하려고 한다.
이 단어들은 객체가 하는 역할에 따른 구분이라고 생각하면 될 거 같다. 하나씩 정리해보자.
✅DTO (Data Transfer Object)
DTO는 데이터 전달만을 위한 객체이다. 그래서 별다른 로직 없이 Getter와 Setter 메소드만 포함한다. 특징을 정리하면 아래와 같다.
- 로직을 가지지 않는 순수한 데이터 객체임
- 주로 View와 Controller 사이에서 활용함
- getter / setter외 아무런 로직을 가지지 않음
@Getter
@Setter
public class Member {
private String username;
private int age;
private String addr;
}
✅DAO (Data Access Object)
DAO는 DB에 접근하는 역할을 하는 객체이다. DB에 접근하기 위한 로직을 분리하기 위해 사용한다고 한다. 특징을 아래와 같다.
- 서비스 모델 부분과 데이터베이스를 연결하는 역할을 함
- 데이터의 CRUD (CREATE, READ, UPDATEM DELETE) 작업을 시행함
도메인 로직으로부터 비즈니스 로직을 분리해 DB관련 매커니즘을 숨기기 위해 사용한다.
📌 CRUD in DB
이름 | 역할 | SQL문 |
CREATE | 생성 | INSERT |
READ | 조회 | SELECT |
UPDATE | 수정 | UPDATE |
DELETE | 삭제 | DELETE |
✅VO (Value Object)
VO는 값 자체를 표현하는 객체이다. 이는 수정할 수 없고 읽는 것만 가능하다! 두 객체의 필드값이 모두 같으면 같은객체이다.
- getter() 메소드를 포함하며, 다른 비즈니스 로직도 포함 가능함
- setter()은 가지지 않음!
- 불변클래스를 만들어 사용함
2. TDD
이번 프로젝트를 TDD로 개발한다고 하여 찾아보았다!
TDD는 Test-Driven Development의 약자로 선 테스트 후 개발하는 방식의 프로그래밍 방법이다.
즉, 자동화 된 테스트 코드를 작성한 후, 테스트를 통과하기 위한 코드를 작성하는 것이다.
✅TDD 개발 방법
- 테스트 케이스 작성
- 만들고 싶은 기능을 점검할 테스트 코드 작성
- 기능코드가 없어 당연히 테스트는 실패로 나옴
- 테스트 케이스를 통과하는 코드 작성
- 테스트 코드를 만족시킬 수 있는 기능 구현
- 테스트 통과를 최우선으로 생각하며 단위 테스트를 통과할 수 있을 정도의 최소한의 코드만 작성
- 작성한 코드 리팩토링
- 기능의 성능 향상, 재사용성 용이, 가독성이 좋은 코드로 기능 코드를 개선
- 테스트 코드를 통해 다시 기능 코드를 점검
- 기능 테스트가 완전해질 때까지 2, 3의 과정을 반복
TDD 개발을 하면 객체지향적 코드를 개발하기 좋아지고, 설계 수정 시간이 단축된다고 한다!
3. 매핑테이블을 사용하는 이유
이번 프로젝트를 같이 하는 선배와 ERD를 설계하고 있었는데, 그분께서 매핑테이블이라는 것을 별도로 만드셨다. 이유를 공부한 적이 있었던 거 같지만 까먹어서 .. ! 정리하려고 한다.
데이터베이스에서 테이블끼리의 관계는 세 가지 종류가 있다.
- 1 : 1 관계
- n : 1 관계
- n : m 관계
1 : 1 과 n : 1 은 굳이 매핑하지 않아도 primary키와 foreign키로 연결해줄 수 있지만, 다대다 관계일 땐 매핑할 수 없다.
이때 둘 사이에 매핑테이블을 넣어 다대일 관계를 만들어주어 연결하는 것이다.
데이터베이스와 관련된 자세한 내용은 따로 업로드 할 예정이다. 아래 링크는 잘 정리되어있는 거 같아 나중에 볼 예정..
https://hsb422.tistory.com/entry/DB-%EC%84%A4%EA%B3%84-PART%EC%A0%95%EA%B7%9C%ED%99%94
'토이프로젝트 > 1. Ride Together HYU - BE' 카테고리의 다른 글
[프로젝트/BE/JPA] 1. 엔티티, 레포지터리 개발하기 - JPA Query Methods (0) | 2024.04.09 |
---|---|
[프로젝트/BE/SpringBoot] 0. 시작 전 기초 정리 (1) - @NoArgsContructor, @Data, @Builder (0) | 2024.03.28 |