inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 스터디 1기] 두번째 발자국

lar
0

1. 2주차 학습한 내용

 

[6일차 - 스프링 컨테이너의 의미와 사용 방법]

1. UserController와 스프링 컨테이너

스프링 빈이란?

JdbcTemplate 의존성 주입이 되어있다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}

서버 시작 시

스프링 컨테이너 시작 -> 기본적으로 많은 스프링 빈 등록 -> 우리가 설정한 스프링 빈(UserController) 등록 -> 의존성 자동으로 설정

스프링 빈으로 등록

2. 스프링 컨테이너를 왜 사용할까?

Interface 활용

스프링 컨테이너 사용시

우선권을 부여하는 어노테이션 활용

3. 스프링 컨테이너를 다루는 방법

빈을 등록하는 방법

@Configuration

@Bean

@Configuration과 @Bean 사용하는 경우

@Component

언제 @Component가 사용될까?

스프링 빈 주입 받는 방법

@Qualifer("value") 사용

@Primary와 @Qualifer 함께 사용할 경우

우선권을 결정해주는 @Primary와 @Qualifer을 함께 사용했을 때 누가 사용될까?

 

[7일차 - Spring Data JPA를 사용한 데이터베이스 조작]

1. 문자열 SQL을 직접 사용하면 좋지 않은 이유

2. JPA(Java persistence API)

JPA란?

Hibernate

3. 유저 테이블에 대응되는 Entity Class 만들기 - Java 객체와 MySQL Table 매핑하기

JPA 어노테이션

기본 생성자 추가

@Entity
public class User {

    protected User() {

    }
}

application.yml - JPA 설정 옵션 추가

spring:
  jpa:
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        dialect: org.hibernate.dialect.MySQL8Dialect

4. Spring Data JPA 사용 - 자동으로 쿼리 전송하기

SQL을 작성하지 않고 유저 생성/조회/업데이트 기능 리팩토링하기

유저 생성 기능 리팩토링하기

Interface UserRepository

UserService

유저 조회 기능 리팩토링하기

UserResponse 생성자 추가

UserService

유저 수정 기능 리팩토링하기

User

SQL을 작성하지 않아도 동작 하는 이유

5. Spring Data JPA 사용 - 다양한 쿼리 작성하기

By 앞에 들어갈 수 있는 구절 정리

각 구절은 and 또는 or로 조합할 수 있다.

By 뒤에 들어갈 수 있는 구절 정리

 

[8일차 - 트랜잭션과 영속성 컨텍스트]

1. 트랜잭션(Transaction)

트랜잭션이란?

트랜잭션 동작 명령어

2. 트랜잭션 적용과 영속성 컨텍스트

트랜잭션 적용하기

@Service
public class UserServiceV2 {

    //조회 - readOnly 옵션 사용 가능(SELECT 쿼리)
    @Transactional(readOnly = true)
    public List<UserResponse> getUsers() {
        return userRepository.findAll().stream().map(UserResponse::new).collect(Collectors.toList());

    }
}

트랜잭션을 사용 하는 이유

주의사항

영속성 컨텍스트이란?

트랜잭션과 영속성 컨텍스트의 관계

영속성 컨텍스트의 특징

 

[9일차 - 조금 더 복잡한 기능을 API로 구성하기]

1. 책 생성/대출/반납 기능 API 개발하기


2. 미션

네 번째 과제(4일차)

다섯 번째 과제(5일차)


3. 회고

1주차보다 학습한 내용이 많아진 만큼 정리를 잘하고 공부를 많이 해야겠다고 느꼈다. 금요일에 해주신 특강도 너무 도움이 되었다. 내용이 나한테는 아직 어려웠지만 다른 사람들의 코드를 보면서 나도 좀 더 고민해보고 코드를 짜고 과제도 해봐야겠다.

백엔드 발자국 회고 워밍업 2주차

답변 0