(Spring-JPA) 엔티티, DTO, DAO

# 1/18 – JPA(엔티티, DTO, DAO) ### 엔터티, DTO, DAO ? !(Untitled)(1%2018%20-%20JPA%20%5BEntity,%20DTO,%20DAO%5D%20fc083ff4eb8446d0adb5bc544721cec2/Untitled.png) – Entity – ORM을 사용하려면 데이터베이스 테이블과 연동되는 객체가 필요합니다. – 엔티티 클래스는 데이터베이스 테이블과 연관된 클래스입니다. – 데이터베이스 테이블의 모든 필드 값을 가져야 합니다. 물론 기본 키도 있어야 합니다. – 엔터티에 setter 메서드가 포함되지 않도록 설계하는 것이 중요합니다. – DTO(Data Transfer Object) – 계층간 데이터 교환을 위한 객체로 Java bean으로 등록되어 사용된다. – 간단한 데이터만 접근할 수 있도록 작성해야 한다. – 회원 비밀번호의 관점, DTO에 포함되어야 하는가? – DTO는 동봉된 메서드로 getter 및 setter만 있는 비즈니스 논리를 포함해서는 안 됩니다. – 즉, 저장, 검색, 직렬화, 역직렬화 등의 기능만 포함합니다. – DTO는 클라이언트가 조작하여 UI에서 사용하는 것이고, 그 과정에서 많은 변화가 일어나므로 Entity는 사용하지 않습니다. – DAO(데이터 액세스 개체) – 데이터베이스 데이터에 액세스하고 관련 논리 및 데이터 조작을 처리하는 개체입니다. – 전통적인 Spring의 JDBC를 사용할 때 DAO를 처리한다. – JDBC를 사용하는 경우 DAO는 드라이버를 통해 데이터베이스에 연결하고 SQL 문을 통해 데이터 관리 로직을 실행합니다. – Spring Data JPA를 사용하는 경우 저장소에서 DAO 로직을 실행합니다.

– VO(Value Object) – 단순히 값을 표현하는 객체 – getter만 포함할 수 있습니다. 값의 변경은 불변이어야 합니다. – 값이 같으면 같은 개체로 판단해야 한다. DTO와 Entity는 따로따로 사용해야 한다는 것을 이해하고 있으며, UI 레벨에서 변경이 발생할 수 있기 때문에 데이터베이스에 직접 연결된 Entity를 다루는 것은 매우 위험하며 바람직한 설계가 아닙니다. 1. DAO는 데이터베이스에서 데이터에 대한 접근과 조작 로직을 처리하는 객체의 정의를 가지고 있는데, 이 경우 데이터베이스 테이블에 매핑되는 Spring 객체의 정의를 가진 엔터티의 경우 DAO에 있는 것은 엔터티라고 합니다.

1. 또한 Spring Data JPA를 사용할 때 Repository가 DAO의 역할을 하는 것을 볼 수 있는데 이런 관점에서 Spring Boot 프로젝트에서 DAO가 필요한가?