인프런 워밍업 클럽 0기 - 백엔드 코스 (2주차 회고)

인프런 워밍업 클럽 0기 - 백엔드 코스 (2주차 회고)

인프런 2주차까지 모든 강의와 과제들을 마무리했습니다.

1주차에 학습했던 내용과 함께 스프링 컨테이너, Spring Data Jpa, 트랜잭션 등 스프링과 DB 개념 그리고 스프링과 DB 매핑 방법과 같이 전반적인 백엔드 기술들을 배울 수 있었습니다. 이후에는 이를 활용한 다른 요구사항 개발과정들을 다시 복습할 수 있는 과정으로 이어져 배운 내용들을 활용해볼 수 있는 기회를 가질 수 있었습니다.

 

6일차

이전에 모든 계층이 JdbcTemplate이나 다른 계층의 객체에 의존적으로 설계되어 있었습니다. 이러한 구조는 의존할 객체가 변경될 경우 의존할 객체를 변경해주어야 되므로, 객체지향 개발 원리 중 OCPDIP를 위반하고 있습니다. 그렇기 때문에 스프링이 제공하는 스프링 컨테이너를 활용해 클래스 내부에서 사용할 다른 클래스들을 스프링 빈으로 등록하고, 필요할 때 등록된 빈을 자동 주입받는 형식으로 사용하도록 변경되었습니다.

이럴 경우 인터페이스의 구현체만 사용자가 변경해주면 자동적으로 스프링이 주입할 빈을 선택하여 자동 주입해주기 때문에 스프링 빈을 사용하는 구간에서는 코드의 변경이 발생하지 않고 사용할 수 있습니다.

사용할 인터페이스에 구현체가 여러 개일 경우 @Primary 어노테이션이나 @Qualifer를 통해 자동 주입 받을 빈을 선택하는 방법도 있습니다.

 

과제

https://www.inflearn.com/blogs/6817

 

7~8일차

이전까지는 JdbcTemplate을 활용해 직접 SQL 쿼리를 작성해 DB에 접근했습니다.

이러한 경우 쿼리문에 실수를 해도 컴파일 시점에 오류를 파악할 수 없다는 문제점이 있습니다. 또한, SQL쿼리가 하나의 데이터베이스에 종속적이게 됩니다.

그래서 JPA를 활용함으로써 이러한 단점들을 극복하려 했습니다.

Jpa는 자바에서 데이터베이스에 접근할 수 있도록 도와주는 ORM입니다. 이 ORM을 통해 객체와 테이블을 매핑할 수 있는 기술을 제공해주고, 영속성 컨텍스트를 통해 한 트랜잭션 내 데이터를 영구히 저장할 수 있도록 해줍니다.

영속성 컨텍스트의 특징은 다음과 같다.

  • 하나의 DB 작업 단위를 나타내는 트랜잭션 내부에서는 변경 감지 기능이 있다. 처음 DB에서 데이터를 조회하는 경우 데이터의 첫 상태를 스냅샷 형태로 저장한 뒤, 트랜잭션이 끝나는 시점에 데이터를 스냅샷과 비교하여 변경이 발생했다면 UPDATE쿼리를 통해 데이터를 자동 수정해준다.

  • 트랜잭션 내부에서 데이터를 삽입했다면 해당 트랜잭션이 끝날 때까지 데이터 삽입을 지연시킵니다.

  • 트랜잭션 내부에서 조회한 엔티티를 다시 조회할 경우 DB에 접근하지 않고 영속성 컨텍스트 내부에서 똑같은 인스턴스를 제공해준다.

 

과제

https://www.inflearn.com/blogs/6850

 

9일차

현재까지 배운 스프링 컨테이너, Jpa, 트랜잭션 이론을 활용할 수 있는 개발을 진행했습니다.

Jpa를 스프링 내에서 좀 더 쉽게 사용할 수 있고 간단한 쿼리 메서드를 제공해주는 Spring Data Jpa를 활용해 개발을 진행했습니다.

댓글을 작성해보세요.

채널톡 아이콘