[JPA] 영속성 컨텍스트, 엔티티 생명주기, @Transactional
·
Programming/JPA
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며JPA를 처음 배웠을 때는 영속성 컨텍스트라는 개념이 잘 와닿지 않아, 완전히 이해하지 못한 채 사용했었다. 하지만 Spring Data JPA를 사용하면서 영속성 컨텍스트가 어떻게 작동하는지 감을 잡으면서 장점을 체감하게 되었고, 왜 굳이 애플리케이션도 아니고 DB도 아닌 중간 영역에 데이터를 한 번 더 저장하는지 이해하게 되었다. 이번 글에서는 이를 복습하고 정리해보고자 한다. ✅ 영속성 컨텍스트와 엔티티 매니저▶ 영속성(Persistence)사전적 의미는 "오래 계속되는 성질"이라고 한다.데이터를 DB에 지속적으로 저장할 수 있는 성질이다. ▶ 영속성 컨텍스트(Persistence Context)영속성 컨텍스트는 엔티티를 관리..
[JPA] N+1 문제와 해결 방법
·
Programming/JPA
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며JPA를 처음 배웠을 때도 N+1 문제라는 용어를 들어본 적은 있었지만, 정확한 의미는 알지 못했다. 이번에 JPA를 심화 학습하며 실제로 해당 문제를 직접 마주하게 되었고, 공부해야 할 필요성을 느꼈다. 이에 N+1 문제가 무엇인지 알아보고, 이를 해결하는 방법과 공부 중에 들었던 의문점들을 정리해 보고자 한다. ✅ N+1 문제란한 번의 쿼리로 가져온 엔티티가 지연 로딩(Lazy Loading) 설정 때문에 추가로 N개의 쿼리를 발생시키는 문제이다. ✅ 발생 원인▶ 지연 로딩(Lazy Loading)지연 로딩은 연관 관계가 설정된 엔티티가 즉시 로딩되지 않고, 실제 접근 시점에 쿼리가 날아간다.지연 로딩은 당장 필요하지 않은 ..
[CS] 인증과 인가, 세션과 토큰
·
Programming/CS
우아한테크코스 레벨 2 자료를 참고하여 학습한 내용을 정리한 글입니다. 💭 들어가며인증과 인가라는 용어는 자주 들어봤지만, 그 차이를 정확히 이해하고 있지는 않았다. 세션과 토큰 방식의 차이점 역시 명확하지 않았다. 이번 기회에 관련 개념들을 학습하면서 많은 의문이 생겼고, 그 과정을 통해 오히려 더 깊이 이해할 수 있었다. 특히 이론적으로만 알고 있었던 Stateless와 Stateful 개념을 실제로 적용해보며 학습할 수 있었던 점이 전체 구조를 파악하는 데 큰 도움이 되었다. 이번 학습을 통해 인증과 인가에 대한 전반적인 개념을 명확히 정리하고자 한다. ✅ 인증과 인가▶ 인증(Authentication)하나의 애플리케이션을 만들었을 때, 아무나 내부 정보에 접근할 수는 없다. 이때 사용자의 ..
[Spring] Spring MVC Config
·
Programming/Spring
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며Spring MVC Config라는 개념을 두 번째 미션에서 배우게 되었다. 사실 이 개념을 알지 못한 채 사용해 본 적이 있다. 바로 Passport 인증 도입기에서였다. 당시에는 커스텀 어노테이션을 사용해 컨트롤러에서 하나의 파라미터로 인증 정보를 간편하게 받아올 수 있도록 구현했는데, 그때는 뭔가 엄청난 걸 해낸 것 같아 스스로 굉장히 뿌듯했다. 그런데 이번에 제대로 공부해 보니 생각보다 별거 아니라는 느낌이 들었다...ㅎㅎ아무튼 그때는 그냥 넘어갔던 개념을 이번 기회에 제대로 학습하고 정리해보고자 한다. ✅ Spring MVC 요청 처리 흐름클라이언트 요청 수신사용자가 웹 브라우저를 통해 HTTP 요청을 보낸다.Dispatc..
[Test] 테스트 더블(Test Double)
·
Programming/Test
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며Spring 미션을 진행하면서 테스트에 대한 방향을 잡지 못해 초기에는 Layered Architecture의 각 계층에 대해 모두 테스트를 작성했다. 이후 테스트의 격리성에 대한 필요를 느끼며, Service 계층에서 Repository 의존성을 분리하기 위해 테스트 더블(Test Double)을 도입했고, 주로 Fake 객체를 활용했다. 이후 테스트 더블의 종류가 다양하다는 것을 알게 되어 이를 정리하였다. ✅ 테스트 더블이란테스트 더블(Test Double)은 실제 객체를 대체하여 테스트에 사용하는 가짜 객체이다. 실제 객체를 사용하기 어렵거나 부적절한 상황에서 해당 역할을 흉내 내어 테스트를 보조한다. 이 개념은 영화 촬영에..
[Spring] 스프링 빈(Spring Bean), Spring Core 어노테이션
·
Programming/Spring
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다.이 글은 IoC 컨테이너와 의존성 주입(DI)에 대한 기본 이해를 바탕으로 작성되었습니다. 관련 내용은 여기에 정리해 두었으니, 참고해 주시면 감사하겠습니다. 💭 들어가며이전 글에서 IoC 컨테이너와 의존성 주입(DI)에 대해 정리했다. 이번에는 그 내용을 바탕으로 스프링 빈(Spring Bean)에 대해 정리하고, 스프링 빈을 보다 편리하게 관리할 수 있도록 도와주는 Spring Core 어노테이션들도 함께 살펴보고자 한다. ✅ 스프링 빈(Spring Bean)이란스프링 빈(Spring Bean)은 스프링 IoC 컨테이너가 생성하고 관리하는 객체를 의미한다. 이 객체들은 컨테이너에 의해 생명 주기가 관리되며, 의존성 주입(DI)을 통해 서로..
[Spring] IoC 컨테이너, 의존성 주입(DI)
·
Programming/Spring
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며이번 미션을 하며 @Autowired 어노테이션을 언제, 왜 사용하는지 명확하게 설명하지 못하는 나 자신을 보며 의존성 주입에 대한 이해가 부족하다는 걸 느꼈다. 이에 관련 개념들을 다시 정리해보기로 했다. 의존성 주입을 제대로 이해하기 위해서는 IoC 컨테이너에 대한 이해가 선행되어야 하고, 이는 스프링 빈 개념과도 밀접하게 연결되어 있다. 그래서 이번 글에서는 먼저 IoC 컨테이너와 의존성 주입에 대해 정리하고, 다음 글에서 스프링 빈에 대해 다뤄보고자 한다. ✅ IoC 컨테이너란IoC 컨테이너는 객체의 생성, 조립(의존성 주입), 생명주기 관리 등을 개발자 대신 수행해 준다. ▶ IoC란IoC(Inversion of Contr..
[Spring] Spring MVC 어노테이션
·
Programming/Spring
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며레벨 2에 들어가면서 Spring에 대해 깊이 있게 학습할 수 있는 시간이 주어졌다. 이전에도 서버를 직접 배포하고 운영해 본 경험은 있었지만, 정작 어노테이션의 역할을 묻는 질문에는 쉽게 대답하지 못했다. 주어진 코드를 이해하지 않고 그대로 사용하기만 했다는 사실을 깨달았다. 그래서 이번 기회에 Spring MVC의 핵심 어노테이션들과 요청 흐름에 대해 정리해보고자 한다. ✅ Annotated ControllersSpring MVC는 어노테이션 기반의 프로그래밍 모델을 제공하여, 개발자가 요청 매핑, 요청 데이터 처리, 예외 처리 등을 어노테이션을 통해 간결하게 구현할 수 있도록 지원한다.이러한 방식에서는 @Controller 또..
soeun2537
'우아한테크코스' 태그의 글 목록