[워밍업 클럽 0기 BE] 2주차 발자국
학습 내용
출처: 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
섹션 4. 생애 최초 JPA 사용하기
문자열 SQL을 직접 작성하는 것의 단점
문자열을 작성하기 때문에 실수할 수 있고, 실수를 인지하는 시점이 느리다.
특정 데이터베이스에 종속적이게 된다.
반복작업이 많아진다.
데이터베이스의 테이블과 객체는 패러다임이 다르다.
=> 그래서 JPA가 등장!
JPA란?
Java Persistence API의 약자로 자바 진영의
ORM(Object-Relational Mapping) 기술 표준을 의미.
데이터를 영구적으로 보관하기 위해 Java 진영에서 정해진 규칙
Spring Data JPA
4. 영속성 컨텍스트
테이블과 매핑된 Entity 객
체를 관리/보관하는 역할을 수행
스프링에서는 트랜잭션을 사용하면 영속성 컨텍스트가 생겨
나고, 트랜잭션이 종료되면 영속성 컨텍스트가 종료
변경 감지 (Dirty Check): 영속성 컨텍스트 안에서 불러와진 Entity는
명시적으로 save 를 해주지 않더라도 알아서 변경을 감지하여 저장
쓰기 지연 : 트랜잭션이 commit 되는 시점에 SQL을 모아서 한 번만 수행
1차 캐싱 : ID를 기준으로 Entity를 기억하는 기능
지연 로딩: 필요한 순간에 연결되어 있는 객체를 가져온다. (fetch 옵션 LAZY, EAGER 중 @OneToMany는 LAZY가 기본)
섹션 5. 책 요구사항 구현하기
상대 테이블을 가리키는 테이블이 연관관계의 주인이다. 연관관계의 주인이 아닌 객체
는 mappedBy 를 통해 주인에게 매여 있음을 표시해 주어야 한다.
양쪽 모두 연관관계를 갖고 있을 때는 양쪽 모두 한 번에 맺어주는 게 좋다.
cascade 옵션을 활용하면, 저장이나 삭제를 할 때 연관관계에 놓인 테이블까지 함께 저
장 또는 삭제가 이루어진다.
orphanRemoval 옵션을 활용하면, 연관관계가 끊어진 데이터를 자동으로 제거해 준다.
미션
의존성 주입을 어디에서 어떻게 하는지를 강의를 들으며, 미션을 하면서 자연스럽게 익히게 되어서 좋았습니다. sql을 직접 사용하는 것과 JPA를 통한 변화가 어떤 차이가 있는지 코드 상으로 확인할 수 있어서 기존에 헷갈리고 불명확한 부분들이 또렷이 보여서 좋았습니다.
회고 및 목표
이전에는 @OneToMany와 같은 애노테이션을 어디에 사용하는지, 왜 사용하는 지를 모르고 그냥 동작하게 만들기 위해서 썼는데 2주차 강의를 수강하면서 각 테이블끼리 객체지향적으로 연결시키면서 자연스럽게 이해할 수 있었던 것 같아서 의미있고 재밌게 느껴졌습니다. 영속성 컨텍스트도 어렵게 생각하다가 강의를 들으니 이해가 잘 되어서 좋았고 전반적인 스프링 부트 기술들에 대해 필요성과 관계성 등을 알게 되어 좋았습니다.
3주차에는 미니 프로젝트를 하면서 배웠던 것들을 스스로 적용해보고 다시 복습하는 시간을 가지고 싶습니다.
댓글을 작성해보세요.