플레이데이터 풀스택 백엔드 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. "왜 이렇게 만들어야 하는가"를 꾸준히 고민하는 습관을 가져야겠다. 더욱더!
'PLAYDATA 주간회고' 카테고리의 다른 글
| 플레이데이터 풀스택 백엔드 9기 6월 3주차 회고 (0) | 2025.06.23 |
|---|---|
| 플레이데이터 풀스택 백엔드 9기 6월 2주차 회고 (2) | 2025.06.17 |
| 플레이데이터 풀스택 백엔드 9기 5월 5주차 회고 (0) | 2025.06.01 |
| 플레이데이터 풀스택 백엔드 9기 5월 4주차 회고 (0) | 2025.06.01 |
| 플레이데이터 풀스택 백엔드 9기 5월 3주차 회고 (0) | 2025.06.01 |