DTO 3

[Spring] 연관관계를 갖는 엔티티를 DTO로 저장할 때 문제 (클라이언트에서 foreign key인 ID만 사용해서 저장하는 법)

문제의 발단은 이러했다. @Getter @NoArgsConstructor @Entity(name = "question_posts") public class QuestionPosts extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "question_post_id") private Long questionPostId; @ManyToOne @JoinColumn(name = "user_id", nullable = false) private Users user; @ManyToOne @JoinColumn(name = "dept_id", nullable = false) private DeptCl..

Back-End/Spring JPA 2023.01.08

[Spring] Test 중 발생한 Dto의 'Cannot construct instance of...' 에러

위와 같은 에러가 발생했다. 처음에 다른 에러도 나서 Service, Controller 부분 다 찾아보고 디버깅 해봤는데 아래 부분에서 계속 오류가 나고 멈추는 것이었다. 하지만 문제는 역시 에러 코드를 잘 읽어야했다... Dto 부분이 문제였고 이는 기본 생성자가 없기 때문이었다. ObjectMapper가 @RequestBody를 바인딩 할 때 기본 생성자를 사용하기 때문에 그런 것이었다. lombok으로 기본 생성자를 만들어 준 후 해결되었다.

[Spring] DAO, DTO, VO의 개념과 차이점

DAO (Data Access Object) : DB의 data에 접근하기 위한 객체로 실제로 DB에 접근하는 객체이다. 프로젝트의 서비스 모델과 실제 DB를 연결하는 역할을 하며, JPA에서는 DB에 데이터를 CRUD하는 Repository 객체들이 DAO라고 볼 수 있다. (좀 더 찾아보니 DAO와 REPOSITORY에 의도와 인터페이스의 메소드 시그니처에 유사성이 존재하지만 그렇다고 해서 둘을 동일한 패턴으로 취급하면 안된다고 한다. 아래 김영한 님의 말씀을 인용해 적어둔다.) repository := dao (비슷함) 이 둘은 거의 같다고 생각하셔도 무방합니다. 좀 더 깊이있게 차이를 설명하면, repotiroy는 엔티티 객체를 보관하고 관리하는 저장소이고, dao는 데이터에 접근하도록 DB접근 ..

반응형