[인프런 워밍업 클럽 - 스터디 0기 BE] 2주차 회고
2주차에서는 7일차에서 과제가 마무리되고 미니 프로젝트를 시작하는 주차다. 다음주에는 미니 프로젝트를 완성하는 것이 목표다.
6일차
스프링 컨테이너에 대해 배웠다. 어렴풋이 알고 있던 스프링 컨테이너와 스프링 빈에 대해 명확히 알게 된 날이었다.
4일차에서 만들었던 api들을 controller-service-repository 계층으로 나누어보았다. 강의에서 들었던 내용을 다시 복습하게 된 시간이었다. 앞으로 api를 구현하게 되면 이 구조가 자연스럽게 나올 수 있도록 더 연습을 해야할 것 같았다.
7일차
JPA에 관한 강의였다. 차근차근 jpa를 이용한 코드로 바꾸는 것을 따라하면서 어떻게 사용해야 할 지를 익혔다.
6일차에 클린코드로 리팩토링한 코드를 다시 jpa를 이용한 코드로 리팩토링하는 미션이였다. 코드가 훨~씬 깔끔해져서 좋았고 구현할 때도 매우 편해서 좋았다. 천천히 코드를 발전해나가니 각 코드가 어떤 의미인지 더 잘 이해가 되었다.
8일차
트랜잭션에 대해 배웠다. 모두 성공하거나 모두 실패해야 하는 업무가 있을 때 묶어서 업무를 진행하기 위해 쓰는 것이 트랜잭션이였다. 너무 간단하게 쓸 수 있어서 좋았다. 트랜잭션과 관련된 영속성 컨텍스트에서도 배웠는데 코드에 도움이 되는 기능이 많아서 편리했다.
[트랜잭션]
쪼갤 수 없는 업무의 최소 단위 (모두 성공하거나 모두 실패!!)
묶어서 저장된다는 의미
start transaction;
commit;
rollback;
@Transactional 어노테이션을 사용한다.
※주의 : IOException과 같은 Checked Exception은 롤백이 일어나지 않는다.
[영속성 컨텍스트]
테이블과 매핑된 Entity 객체를 관리/보관하는 역할
스프링에서는 트랜잭션을 사용하면 영속성 컨텍스트가 생겨나고, 트랜잭션이 종료되면 영속성 컨텍스트가 종료된다.
1. 변경 감지
2. 쓰기 지연 (한 번에 모아서 쓰기)
3. 1차 캐싱
4. (네번째 특징은 다음 섹션에 알려주신다고 하셨다..)
9일차
좀 더 복잡한 구조의 api를 만들어 보면서 여태 배워왔던 것을 복습해보는 과정이었다. 대출기능과 반납기능 api를 개발해보면서 연습했다.
댓글을 작성해보세요.