본문 바로가기
  • Let's study
회고/프로그래머스 데브코스

백엔드 데브코스 12기 19일차

by 코딩고수이고파 2026. 8. 5.

오늘은 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

 

댓글