@Column의 속성들
- name: 매핑할 컬럼의 이름을 지정
- insertable: Entity 저장 시 해당 Field도 저장 / false는 읽기전용
- updatable: Entity 수정 시 해당 Field도 수정 / false는 읽기전용
- nullable: true/false로 null 허용 여부
- unique: true/false로 Unique 제약 조건
- length: 길이 제한
- precision, scale(DDL): 아주 큰 숫자나 정밀한 소수를 위해 사용
DAO, DTO, VO, Entity?

Entity란?
- 실제 DB테이블과 매핑되는 클래스
- 스프링에서 Entity가 해당
DAO란?
- Data Access Object의 약자
- DB 데이터에 접근하기 위한 객체
- 비즈니스 로직 같은 것을 포함
- 데이터의 CRUD를 작업을 시행하는 클래스
- Repository가 DAO의 역햘을 함
DTO란?
- Data Transfer Object의 약자
- 비즈니스 로직 같은 것은 없고 순수하게 데이터만 포함
- 프로세스 간에 데이터를 전달하는 객체
- getter와 setter를 포함할 수 있음
- record를 이용해서 구현도 가능
- 보통 Spring boot의 MVC모델에서 Client와 Controller 사이에서 사용
- 전송을 위한 객체
VO
- Value Ojbect의 약자
- 불변성, 값 동등성, 자가 유효성 검증의 특징을 가진다.
- 비즈니스 로직을 가질 수 있음
- 값 자체를 표현하기 위한 객체
DTO 만들기
package com.chan.ssb;
public record TeamDTO(Long id, String name, String city, int championships) {
}
- record를 이용해서 간단하게 구현 가능하다.