PLAYDATA 주간회고

플레이데이터 풀스택 백엔드 9기 6월 1주차 회고

Berry-mas 2025. 6. 9. 16:18

플레이데이터 풀스택 백엔드 9기 12주차 주간회고 및 학습기록 (열두번째 기록)


Facts

이번 주는 jpa와 restAPI를 배웠다.  JPA를 통해 객체와 데이터베이스 간의 매핑이 어떻게 이루어지는지 공부했고, @Entity, @Id, @GeneratedValue, @Column 등의 어노테이션을 통해 테이블과 자바 객체를 연결하는 연습을 했다. 완벽하게 손에 익지는 않았지만 이해가 아예 안 된 건 아니기 때문에 꾸준히 연습하면 프로젝트에서 적절히 쓸 수 있을 것이다. @OneToMany, @ManyToOne 같은 연관관계 매핑은 꽤나 헷갈렸다. 아예 모르겠다 수준은 아니지만 다시 한 번 복습해야 한다. 

 

REST API 파트에서는 @RestController, @RequestMapping, @GetMapping, @PostMapping 등을 사용하는 방법을 배웠다. 또한 @ResponseEntity, @RequestBody, @RestControllerAdvice 등도 공부했으나 한번에 많은 어노테이션을 공부하다보니 많이 헷갈렸다. 


Feelings

이번 주는 "왜 이렇게 코드를 짜야 하는지"에 대한 고민을 하려고 노력했다. 요즘 큰 고민없이 코드 타이핑을 따라가기만 하는 데 급급하다는 생각이 들었다. 최근에 "왜 그렇지?"에 대한 고민을 하기보다는 단순히 "아~ 그렇구나, 수업 끝나고 다시 봐야지"하는 마음으로 넘기는 시간이 많아졌다. 결국 처음 마음먹은 만큼 복습을 하지 못하기 때문에 이런 마인드가 절대 내 공부에 도움되지 않는다고 느꼈다. 특히 jpa를 처음 접했을 때 어노테이션이 많고 엔티티 간 관계 설정이 복잡해 이 폴더, 저 폴더 왔다갔다 하다보니 나도 모르게 '그냥 받아들이자' 하려고 했던 거 같다. 그럴수록 복습할 때 더 힘들다는 걸 느꼈고 "왜?"에 대한 고민을 더 많이 해야겠다고 생각했다.

 

JPA를 배우면서 정확하고 효율적인 설계가 중요하다는 걸 느꼈다. 물론 눈앞에 닥치면 할 수 있겠지만, 벌써부터 최종 프로젝트에 대해 고민되기 시작했다. 로비 화이트보드에 '아키텍쳐 설계에 일주일 이상 시간을 쏟으세요' 라는 조언이 있는데 왜 그런 조언이 남겨져 있는지 이해되기 시작했다. 


Finding

어노테이션 정리

1. JPA 관련
어노테이션 용도
@Entity 해당 클래스가 JPA에서 관리할 엔티티임을 명시
@Table(name = "table_name") 매핑할 DB 테이블명 지정
@Id 기본키 (Primary Key) 지정
@GeneratedValue 기본키 자동 생성 전략 지정
@Column 테이블의 컬럼과 필드를 매핑
@OneToMany 일대다 관계 설정
@ManyToOne 다대일 관계 설정
@Access(AccessType.FIELD/PROPERTY) JPA가 접근할 방식 지정
@Enumerated(EnumType.STRING) enum 타입을 문자열로 DB에 저장
@Transient JPA가 무시할 필드 지정 (DB 반영 X)
2. Spring Web / REST API 관련
어노테이션 용도
@RestController REST API용 컨트롤러 (자동으로 @ResponseBody 포함)
@GetMapping, @PostMapping HTTP 메서드와 URL 매핑
@RequestParam 쿼리 파라미터 받기
@PathVariable URL 경로 변수 받기
@RequestBody HTTP  요청 본문 (body)을 객체로 변환
@ResponseEntity 응답 상태 코드 + 헤더 + 바디 조합 제어
@RestControllerAdvice 전역 예외 처리 클래스
@ExceptionHandler 특정 예외에 대한 처리 메서드 지

 

3. Lombok 및 유틸 관련 어노테이션
어노테이션 용도
@Getter, @Setter 필드에 대한 getter/setter 자동 생성
@NoArgsConstructor, @AllArgsConstructor 생성자 자동 생성
@Builder 빌더 패턴 자동 생성
@ToString toString 메소드 자동 생성
@RequiredArgsConstructor final 필드만 있는 생성자 자동 생성 ( DI 할 때 유용

 


Future

1. 객체 간 관계 설정이나 응답 구조의 일관성 등에 대해 더 고민해야겠다. 이게 보통 어려운 게 아닌 거 같다.

2. "왜 이렇게 만들어야 하는가"를 꾸준히 고민하는 습관을 가져야겠다. 더욱더!