1. 소개한 브랜치의 변경 내용을 다른 브랜치에 합치는 과정 명령어git checkout maingit merge feature-login git checkout으로 main이나 master 브랜치(실제 운영중인 브랜치)로 이동 후 git merge로 작업중이던 브랜치와 합병 Merge 방식1. Fast-forward Merge (빠른 병합)병합 대상 브랜치가 변경 사항 없이 직선적으로 이어지는 경우새로운 커밋 없이 브랜치 포인터만 이동2. Three-way Merge (3방향 병합)두 브랜치가 각각 다른 변경 사항을 포함한 경우새로운 병합 커밋이 생성됨충돌(conflict)이 발생하면 수동으로 해결 Merge Conflict (병합 충돌)브랜치 간 같은 파일의 같은 부분이 다르게 수정되었을 때 충돌..
1. 소개N + 1 문제란?JPA에서 연관 관계를 조회할 때 발생하는 성능 문제.하나의 쿼리로 데이터를 가져왔는데, 연관된 엔티티를 조회할 때 추가로 N개의 쿼리가 발생하는 문제를 말한다.Lazy Loading으로 인해 연관된 엔티티를 개별 조회하면서 발생한다. LazyLoding 이란?LazyLoding(지연 로딩)은 객체를 실제로 사용할 때까지 데이터를 로딩하지 않는 방식.즉, JPA가 연관된 엔티티를 즉시 가져오지 않고, 필요한 순간 (ex) 메서드 호출) 에 쿼리를 실행하는 방식이다. 문제를 유발하는 이유Lazy Loading을 사용하면 연관된 엔티티를 처음 조회할 때는 불러오지 않고, 필요할 때 추가적으로 조회하게 됨.이 방식이 대규모 데이터에서는 N + 1 문제를 초래할 수 있다. 쓰지말아야하..
1. 소개관계 매핑 어노테이션이란? DB에서 원래 사용하던 개념을 Java 객체에서도 쉽게 사용할 수 있도록 해주는 도구 사용하는 이유 SQL 직접 작성 → 자동 변환원래라면 JOIN 같은 SQL을 직접 써야 하는데, JPA에서는 어노테이션만 붙이면 자동으로 처리됨.예를 들어, @OneToMany를 사용하면 내부적으로 JOIN을 사용한 SQL을 실행해 줌.객체 지향적인 개발을 가능하게 함DB는 테이블과 컬럼 기반인데, Java는 객체와 필드 기반이를 매끄럽게 연결해주기 위해 관계 매핑 어노테이션이 필요함.생산성 향상SQL을 일일이 작성하는 대신, JPA가 알아서 적절한 SQL을 실행해 주니까 개발 속도가 빨라짐.유지보수 용이비즈니스 로직이 변경되더라도, 관계 매핑을 어노테이션으로 관리하면 SQL을 직..
그냥 기본 구조만 정리한 글입니다. 1. 프로젝트 생성IntelliJ 환경으로 가정!1) IntelliJ pro에서 생성 파일 > 새로 만들기 > 프로젝트 좌측 제너레이터 > Spring Boot 선택 이름, 프로젝트 위치, 사용할 언어, 종속성 타입, jdk 버전 선택 후 다음 2) Spring Initializr 사용 Intellij 무료 버전에서는 Spring Boot 프로젝트를 생성할 수 없다... 그러면 Spring Initializr 홈페이지에서 프로젝트를 만들 수 있다. 프로젝트 설정 후 GENERATE 버튼을 눌러 ZIP파일을 다운받는다.압축을 풀어주고 intelliJ로 열어주면 끝 2. 프로젝트 구조Spring Boot 프로젝트는 기본적으로 아래와 같은 디렉토리 구조를 가진다. proje..
HTTP 상태 코드란?HTTP 상태 코드는 특정 HTTP 요청이 어떻게 처리되었는지 알려준다.기본적으로 응답은 5개의 그룹으로 나누어진다.1XX: 정보 제공2XX: 성공3XX: 리다이렉트4XX: 클라이언트 에러5XX: 서버 에러상태 코드에 대해 더 자세한 내용은 여기로 그런데 이런 기본적인 상황말고 개발자가 더 많은 상황에 대한 응답을 하고 싶을 수도 있지않을까?그리고 성공이나 에러와 함께 값도 전달하고 싶다면?그럴때 사용하는 것이 ResponseEntity이다. ResponseEntity란?ResponseEntity는 HTTP 응답을 나타내는 Spring Framework의 클래스. 이 클래스는 요청에 대한 응답의 HttpHeader, HttpBody 및 Status Code를 포함하여 클라이언트에게..
1.소개Bean은 Spring 컨테이너에서 관리하는 객체를 의미한다.일반적으로 @Component, @Service, @Repository, @Controller 등의 어노테이션을 사용하면 Spring이 자동으로 빈을 생성하고 관리한다. 2. 특징Spring 컨테이너에서 관리개발자가 직접 객체를 생성하는 것이 아닌 Spring이 생성하고 관리함.싱글턴이 기본 적용기본적으로 Spring Bean은 싱글턴(애플리케이션 실행 중 하나의 인스턴스만 생성)으로 관리된다.의존성 주입 (DI) 지원@Autowired 등을 사용하여 필요한 곳에 자동으로 빈을 주입할 수 있다. 그냥 Spring Framework에서 대신 객체를 생성해주고 필요한 곳에 할당해주는 거라고 생각하면된다. 객체 == 빈 3. Bean 등록 방..