오늘은 JPA의 연관관계와 Cascade, Lazy/Eager Loading 등 객체지향적으로 데이터를 다루는 방법을 배웠다.
기존에 SQL만 사용할 때는 테이블 중심으로 생각했는데, JPA는 객체 중심으로 생각해야 해서 아직은 조금 헷갈리는 부분이 있다. 특히 @OneToMany, @ManyToOne과 Cascade 옵션이 처음에는 어려웠지만, 객체 간의 관계를 이해하고 나니 왜 이렇게 사용하는지 조금씩 감이 잡히기 시작했다.
1. [Spring] Spring Boot에서 웹 요청은 어떻게 처리될까? (@Controller, @GetMapping)
[Spring] Spring Boot에서 웹 요청은 어떻게 처리될까? (@Controller, @GetMapping)
@Controller@Controller는 스프링 MVC에서 요청을 처리하는 클래스를 의미한다.@Controllerpublic class MainController {} 클라이언트가 요청을 보내면 DispatcherServlet이 적절한 Controller를 찾아 실행한다.@GetMappingGET
hyemzzi.tistory.com
2. [Spring] @OneToMany와 @ManyToOne
[Spring] @OneToMany와 @ManyToOne
@ManyToOnepublic class Answer { @ManyToOne private Question question;} Answer가 Question을 참조한다.DB에서는 question_id 외래키가 생성된다.외래키는 항상 자식(N쪽) 에 생성된다.@OneToManypublic class Question{ @OneToMany(mapped
hyemzzi.tistory.com
3. [Spring] JPA 메서드 명명 규칙(Query Method)
[Spring] JPA 메서드 명명 규칙(Query Method)
Spring Data JPA를 보면 QuestionRepository에는 findBySubject() 메서드를 직접 구현하지 않았는데도 정상적으로 동작한다. public interface QuestionRepository extends JpaRepository { Question findBySubject(String subject);} 메서드
hyemzzi.tistory.com
4. [Spring] JPA CascadeType과 Flush
[Spring] JPA CascadeType과 Flush
CascadeType.REMOVE부모 엔티티가 삭제될 때 자식 엔티티도 함께 삭제한다.@OneToMany( mappedBy = "question", cascade = CascadeType.REMOVE)private List answers = new ArrayList();questionRepository.delete(question); 실행 순서Answer 삭
hyemzzi.tistory.com
5. [Spring] Lazy Loading vs Eager Loading
Lazy Loading vs Eager Loading
JPA에서 연관된 엔티티를 언제 조회할 것인지를 결정하는 옵션이다. LAZY : 실제로 사용할 때 조회EAGER : 부모를 조회할 때 함께 조회구분LAZY (지연 로딩)EAGER (즉시 로딩)조회 시점사용할 때 조회부
hyemzzi.tistory.com
'회고 > 프로그래머스 데브코스' 카테고리의 다른 글
| 백엔드 데브코스 12기 21일차 (1) | 2026.08.07 |
|---|---|
| 백엔드 데브코스 12기 20일차 (0) | 2026.08.06 |
| 백엔드 데브코스 12기 18일차 (0) | 2026.08.04 |
| 백엔드 데브코스 12기 16일차 (0) | 2026.07.31 |
| 백엔드 데브코스 12기 15일차 (0) | 2026.07.30 |
댓글