
블로그 작성법
목표 > 공부한 내용 > 얻었고, 앞으로 이걸 해봐야지 적기
복습
1. Repository는 시스템 단위로 나누기
shell: 조개 껍데기
ex. OS -> shell -> Kernel -> HW
shell -> 어려운 프로그램
(내가 보이지 않는, 어려운 친구들 한테) 명령어를 치는 곳
ex. windows cmd, mac terminal, linux shell, git bash
cf. bash = born again shell
Repository 간결해짐
1) 메소드화: Member 메소드들을 바꿔주세요.
2) 추가하고 싶은 메소드도 쉽게 생성
어노테이션으로 연관 관계
= Application main 메소드를 건드리지 않고, 특정 코드를 실행 가능!
테스트 코드
Application main 메소드랑 병렬로 기동될 수 있는 방법
= Application main 메소드를 건드리지 않고, 특정 코드를 실행가능하다.
1. CommandRunner
2. ApplicationRunner
+ health check 용도
스타트업, 벤처, 중소/중견
3. ApplicationReadyRunner
JPA(EntityManager를 개발자가 직접 다룸)를
Spring이 조금 더 쉽고 편하게 쓸 수 있는 인터페이스화(추상화)
[JPA가 제공하는 Repository interface 종류]
public interface MemberJPARepository<Member> extends
QueryByExampleExecutor<Member>,
PagingAndSortingRepository<Member, Integer>,
CrudRepository<Member, Integer> {
}
CrudRepository, PagingAndSortingRepository, QueryByExampleExecutor
3개를 합친 것이 JPARepository
JPA는
Java의 camelCase -> DB의 snake_case로 변환한다.
컨테이너 객체이다.
이 말은 다른 객체를 감싸준다는 것이다.
왜? NullPointerException -> null 예외 처리이다.
만약에 1.8 이전 버전에서는 null check를 어떻게 했을까?
null은 누구의 책임인가부터 생각해보자.
null을 처음 발견한 클래스의 책임인가?
null이 발생할 수 있는 메소드를 호출한 클래스의 책임인가?
ex. findByUserId: repository vs service (vs controller)
: 요구사항 Spring Data JPA
shoppingmall (모든 부가 기능 옵션 ex. paging)
보통 순서: 중요한 순으로 작성
1. product
2. member(order 하기 위해 member가 필요)
3. order
알쓸송잡
오늘은 어제 배웠던, JPA를 Spring Data JPA로 변환하는 과정을 거쳤다. 앞으로는 Spring Data JPA를 사용하여 DB와 상호작용할 것 같다.