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

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

[강의 내용 정리]

Section3. 스프링 컨테이너와 스프링 빈

  • 스프링 빈

    • 서버 실행 → 서버 내부에 컨테이너가 만들어짐 → 컨테이너에 클래스가 들어감

    • 컨테이너의 역할 : 서로 필요한 관계에 있는 스프링 빈끼리 연결시킴

  • 스프링 컨테이너

    • Service를 대신 인스턴스화 하고, 그 때 알아서 Repository를 결정하여 주입 : 제어의 역전

      • 어떤 Repository가 사용될 지는 Repository에서 결정 (사용할 것에 @Primary붙여주기)

      • @Primary : 우선권을 결정하는 어노테이션

    • Repository에서 인터페이스 구현

    • @Configuration, @Bean, @Component, @Qualifier 등의 어노테이션을 통해 스프링 컨테이너 사용


Section 4. JPA(Java Persistence API)

  • SQL을 직접 작성하면 아쉬운 점

    1. SQL 문자열 작성에서 실수가 발생할 수 있으며, SQL 관련 오류가 컴파일 시점이 아닌 런타임 시점에 발견됨

    2. 특정 데이터베이스에 종속적임

    3. 반복 작업이 많아짐(CRUD를 모두 작성해야 함)

    4. 데이터베이스의 테이블과 객체의 패러다임이 다름

  • JPA

    • 객체와 관계형 DB의 테이블을 짝지어 데이터를 영구적으로 저장할 수 있도록 정해진 Java 진영의 규칙

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

    • Repository에서 JdbcTemplate를 사용하여 결과를 하나하나 매핑해 주는 방식이 아닌, 객체 간의 변환 진행

  • 트랜잭션

    • 쪼갤 수 없는 업무의 최소 단위 (모두 성공시키거나, 모두 실패시키거나)

    • 한 몸처럼 묶어서 저장

    • 스프링에서 트랜잭션 적용

      • @Transactional (org.springframework.transaction.annotation)

      • 해당 함수가 실행될 때, start transaction;

      • 함수가 예외 없이 잘 끝나면, commit, 문제가 있다면 rollback

      • 역할

        1. 변경 감지

        2. 쓰기 지연

        3. 1차 캐싱

        4. 지연 로딩


[과제 정리]

[과제 4] POST, PUT, GET API

[과제 5] 클린 코드


[회고]

과제를 수행하며 더 가독성 있고 클린한 코드를 작성하기 위해 어떻게 하면 좋을지 고민했던 한 주였다. 다른 사람들이 작성한 코드도 살펴보면서 내 코드에서 부족한 점과 업그레이드할 점을 찾아보고 더 공부할 수 있었다. 과제 마감 후, 과제 수행 목적에 맞게 풀이했는지 확인하는 것도 많은 도움이 됐다.

댓글을 작성해보세요.