inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 1기] BE 2주차 발자국

이용수
0

인프런 워밍업 클럽 2주차 발자국

서론

벌써 강의를 들은지 2주차가 지나간다. 지난 주차와 마찬가지로 강의와 스터디를 하면서 배운 내용을 잊지 않도록 주마다 블로그에 정리하려고 한다.

섹션 3 : 역할의 분리와 스프링 컨테이너

UserController와 스프링 컨테이너

스프링 컨테이너를 사용하는 이유 다음 시간에

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

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

Section 3 정리

섹션 4 생애 최초 JPA 사용하기

문자열 SQL을 직접 사용하는 것이 너무 어렵다

유저 테이블에 대응되는 Entity Class 만들기

application.yml

  jpa:
    hibernate:
      ddl-auto: none // 스프링이 시작할 때 DB에 있는 테이블을 어떻게 처리할지 설정.
      // create : 기존 테이블이 있다면 삭제 후 다시 생성
      // create-drop : 스프링이 종료될 때 테이블을 모두 제거
      // update : 객체와 테이블이 다른 부분만 변경
      // validate : 객체와 테이블이 동일한지 확인
      // none : 별다른 조치를 하지 않는다.
    properties:
      hibernate:
        show_sql: true // JPA를 사용해 DB에 SQL을 날릴 때 SQL을 보여줄지 말지.
        format_sql: true // SQL을 보여줄 때 이쁘게 포맷팅 할지 말지.
        dialect: org.hibernate.dialect.MySQL8Dialect // 이 옵션으로 DB를 특정하면 조금씩 다른 SQL을 수정해준다.

Spring Data JPA를 이용해 자동으로 쿼리 날리기

Spring Data JPA를 이용해 다양한 쿼리 작성하기

public interface UserRepository extends        JpaRepository<User, Long> {
        Optional<User> findByName(String name);
}
public void deleteUser(String name) {
        User user = userRepository.findByName(name)
                        .orElseThrow(IllegalArgumentException::new);

        userRepository.delete(user);
    }

트랜잭션에 대해 다음 시간에 알아볼 예정.

트랜잭션 이론편

트랜잭션 적용과 영속성 컨테스트

Section 4 정리

섹션 5 책 요구사항 구현하기

책 생성 API 개발하기

{
    "name": String //책 이름
}

대출 기능 개발하기

{
    "userName": String 
    "bookName": String
}

반납 기능 개발하기

{
    "userName": String 
    "bookName": String
}

Section 5 정리

2주차 과제

과제 4번 : https://www.inflearn.com/blogs/7855

과제 5번 : https://www.inflearn.com/blogs/7873

2주차 후기

지난주 1주차 회고록에 이어서 벌써, 인프런 워밍업 클럽 과정의 2주차가 마무리됬다. 이번 주차에서는 섹션 3의 일부분 부터 섹션 5의 일부분의 강의를 수강할 수 있었다. 간단하게 각 섹션 별로 강의의 주제를 다시한번 상기하고 어떤걸 배우고 느꼈는지 확인해보려고 한다.

섹션 3의 주제 : 역할의 분리와 스프링 컨테이너

역할의 분리에 대해서는 이전 회고록에서 상세히 다루었기 때문에 다루지 않겠다.

스프링 컨테이너와 스프링 빈에 무엇인지 이해하고 어떻게 동작하는지 구조를 파악할 수 있었으며, 스프링 컨테이너를 사용하는 것이 좋은 코드와 어떻게 연관이 있는지 이해하고 스프링 빈을 다루는 여러 방법을 배울 수 있었다.

섹션 4의 주제 : 생애 최초 JPA 사용하기

문자열 SQL을 직접 사용하는 것의 한계를 이해하고, 해결책인 JPA, Hibernate, Spring Data JPA가 무엇인지 이해할 수 있었다. Spring Data JPA를 이용해 데이터를 생성, 조회, 수정, 삭제해 볼 수 있었다. 트랜잭션이 왜 필요한지 이해하고, 스프링에서 트랜잭션을 제어하는 방법을 익혔다. 영속성 컨텍스트와 트랜잭션의 관계와 특징을 이해할 수 있었다.

섹션 5의 주제 : 책 요구사항 구현하기

책 생성, 대출 반납 API를 온전히 개발하며 지금까지 다루었던 모든 개념을 실습해 볼 수 있었다.

깜짝 라이브 강의

5번 과제인 클린 코드로 변환하는 방법에 대해 깜짝 라이브 강의를 열어 자세한 코드 리뷰를 진행했다.

코치님이 직접 코드를 리팩토링 하는 과정을 지켜보고 따라해보며 크게 느낀점이 있었는데, 내가 항상 클린 코드를 만든다고 만들지만 그 끝은 끝이 없구나 하고 생각이 들었다.

일단 코치님이 진행한 수준까지 라도 충분히 이해하고 적용하는 것까지 진행하는 것이 우선적이라 생각이 들었다.

그 외에도 코치님과 비슷하게 리팩토링을 수행한 수강생에 대해 알려주셨는데, 분명히 다른 사람 코드를 살펴보고 이해하는 것이 중요하다고 생각했고, 다른 수강생의 코드를 보고 워밍업 클럽 커뮤니티에서 서로 물어볼 수 있다는 부분에 있어 그렇게 학습하는 것이 강의 취지에 맞게 학습하는 것이라 생각했다.

마무리

이번 2주차 강의를 듣고 회고록을 작성하면서 앞으로도 지금처럼 성실함을 중점으로 꾸준하게 강의를 듣고 기록하는 것이 중요하다고 생각했다. 다음주는 벌써 배포에 대해 배우는 시점이 온다. 개인적으로 제일 관심이 있던 부분이기 때문에 더 확실하게 이해하기 위해 주말에 미리 선행을 진행 해보려고 한다.

백엔드 백엔드 인프런 워밍업

답변 0