비즈니스 요구사항을 모델링한 객체
@Entity
@Table(name="member")
@Getter @Setter
@ToString
public class Member {
@Id
@Column(name="m_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
@JoinColumn(name="m_img_id")
private MemberImg memberImg;
@Column(unique = true)
private String email;
private String password;
private String name;
}
데이터를 주고 받을 때는 Entity 클래스 자체를 반환하면 안 되고, 데이터 전달용 객체(Data Transfer Object)를 생성해서 사용해야 함
@Getter
@Setter
public class MemberFormDto {
@NotBlank(message = "이메일은 필수 입력 값입니다.")
@Email(message = "이메일 형식으로 입력해주세요.")
private String email;
@NotBlank(message = "비밀번호는 필수 입력 값입니다.")
private String password;
@NotBlank(message = "이름은 필수 입력 값입니다.")
private String name;
}
실제로 DB의 데이터에 접근하는 객체(Data Access Object)
Service와 DB를 연결하는 역할을 하며, 실제로 DB에 접근하여 데이터에 대해 CRUD 기능을 수행함
public interface itemRepository extends JpaRepository<Item, Long> {
}
변경 불가능하며, 오직 읽기만 가능(Value Object)
DTO는 setter를 가지고 있어 값을 변경할 수 있지만, VO는 getter만을 가지기 때문에 읽기만 가능하고 수정은 불가능함