[인프런 워밍업 클럽 1기 BE] 두 번째 발자국
[강의 내용 정리]
Section3. 스프링 컨테이너와 스프링 빈
스프링 빈
서버 실행 → 서버 내부에
컨테이너
가 만들어짐 → 컨테이너에 클래스가 들어감컨테이너의 역할 : 서로 필요한 관계에 있는
스프링 빈
끼리 연결시킴
스프링 컨테이너
Service를 대신 인스턴스화 하고, 그 때 알아서 Repository를 결정하여 주입 : 제어의 역전
어떤 Repository가 사용될 지는 Repository에서 결정 (사용할 것에
@Primary
붙여주기)@Primary
: 우선권을 결정하는 어노테이션
Repository에서 인터페이스 구현
@Configuration
,@Bean
,@Component
,@Qualifier
등의 어노테이션을 통해 스프링 컨테이너 사용
Section 4. JPA(Java Persistence API)
SQL을 직접 작성하면 아쉬운 점
SQL 문자열 작성에서 실수가 발생할 수 있으며, SQL 관련 오류가 컴파일 시점이 아닌 런타임 시점에 발견됨
특정 데이터베이스에 종속적임
반복 작업이 많아짐(CRUD를 모두 작성해야 함)
데이터베이스의 테이블과 객체의 패러다임이 다름
JPA
객체와 관계형 DB의 테이블을 짝지어 데이터를 영구적으로 저장할 수 있도록 정해진 Java 진영의 규칙
Spring Data JPA를 이용해 자동으로 쿼리 날리기
Repository에서 JdbcTemplate를 사용하여 결과를 하나하나 매핑해 주는 방식이 아닌, 객체 간의 변환 진행
트랜잭션
쪼갤 수 없는 업무의 최소 단위 (모두 성공시키거나, 모두 실패시키거나)
한 몸처럼 묶어서 저장
스프링에서 트랜잭션 적용
@Transactional
(org.springframework.transaction.annotation)해당 함수가 실행될 때,
start transaction;
함수가 예외 없이 잘 끝나면,
commit
, 문제가 있다면rollback
역할
변경 감지
쓰기 지연
1차 캐싱
지연 로딩
[과제 정리]
[회고]
과제를 수행하며 더 가독성 있고 클린한 코드를 작성하기 위해 어떻게 하면 좋을지 고민했던 한 주였다. 다른 사람들이 작성한 코드도 살펴보면서 내 코드에서 부족한 점과 업그레이드할 점을 찾아보고 더 공부할 수 있었다. 과제 마감 후, 과제 수행 목적에 맞게 풀이했는지 확인하는 것도 많은 도움이 됐다.
댓글을 작성해보세요.