[인프런 워밍업 스터디 클럽 0기_BE] 2주차 회고록 정리
짧은 다리의 두 번째 발걸음
6일차 역할의 분리와 스프링 컨테이너
Spring Bean
: 스프링 컨테이너 안으로 들어간 클래스를 스프링 빈이라 함
@Service와 @Repository를 통해서 Service와 Repository도 스프링 빈으로 등록가능함
@Primary
: 어노테이션의 일좀으로 우선권을 정해줄 수 있다
@Configuration
: @Bean과 함께 사용
@Bean
: 메소드 객체를 스프링에 등록할 때 사용
@Component
: @Controller
, @Service
, @Repository
모두 아니면서, 직접 작성한 클래스를 스프링 빈으로 등록한다
7일차 Spring Data JPA를 사용한 DB 조작
SQL 문 직접 작성의 문제
-> 문자열 작성이어서 오타 발생시 알아채기 어려움, 컴파일 시점에 발견안되고 런타임 시에 발견된다
-> 특정한 DB에 종속된다
-> 테이블 마다 CRUD반복 작업이 필요하다
-> 객체와 달리, 양방향이 아닌 단방향이다
JPA 를 통해 문제해결
: 객체와 관계형 DB 테이블을 짝지어 데이터를 영구적 저장하도록 해주는 JAVA 진영 규칙
spring:
datasource:
url: "jdbc:mysql://localhost/library"
username: root
password:
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: none
properties:
hibernate:
show_sql: true
format_sql: true
dialect: org.hibernate.dialect.MySQL8Dialect
8일차 트랜잭션과 영속성 컨텍스트를 이용한 요구사항 구현
트랜잭션
: DB의 논리적 연산 단위. 1개의 트랜잭션에는 N개(≥1)의 SQL문 포함
@Transcational
붙어있는 메서드가 시작할 때 트랜잭션을 시작
예외 없이 잘 끝났다면 commit
오류라면 rollback
영속성 컨텍스트
: 테이블과 매핑된 Entity 객체를 관리/보관하는 역할, 스프링에서는 트랜잭션 사용 시 영속성 컨텍스트가 생성, 트랜잭션 종료 시 영속성 컨텍스트가 종료
특징
변경감지
쓰기 지연
1차 캐싱
회고
: 과제가 끝나면서 조금 마음이 가벼워진 느낌이 있었다. 실제 프로젝트를 하려하니 생각이 많아지고 어떻게 하면 좋을지 고민하는 시간이 많았다. 코치님의 각 주차에 따라 내용을 따라는 가는것 같은데 막상 내것이 되었나 생각하며 코드를 치려고 하니 시간이 배로 걸리고 오류가 자주났다. 진짜 하,,,,,,,, 라고 한숨만 하루에 100번도 넘게 쉰적이 많았다. 특히나 db연결하는데 있어서 인텔리제이랑 mysql연동해놓고 하다가 컴퓨터 껐다가 켜서 시작 프로그램이 좀 지저분해 몇개 지우니 db연결이 끊기고 다시 연결안되는 문제로 한나절 고생한것을 생각하니 진짜 암담했다. jpa에 대해서 말만 듣고 실제 해보니 마법과도 같은 편리함과 놀라움이어서 재밌었다. 문법을 좀 알고 공부해야 할것 같은데. 이렇게 나마 써보고 배울수 있어서 유익한 시간이었다. 각 주차에 따라, 따라가는 것이 좀 버겁지만 걸어가든 기어가든 완주를 하면서 얻는것이 많다고 생각하기에 끝날때까지 복습하면서 완주해낼 생각이다. 남은 시간도 스스로에게 부끄럽지 않게 공부할수 있길 바란다.
댓글을 작성해보세요.