[인프런 워밍업 클럽]2주차 발자국

[인프런 워밍업 클럽]2주차 발자국

6일차

@RestController

  • API진입 지점을 만들어준다.

  • 해당 클래스를 스프링 빈으로 등록시킨다.

  • new 해줄 필요가 없다(스프링 빈이니깐)

  • @Repository, @Service 이 어노테이션도 스프링 빈으로 등록시켜준다.

  • @Configuration + @Bean 사용방법도 있다.

  • 외부라이브러리나 프레임워크에 만들어져 있는 클래스를 빈으로 등록할때 많이 사용하는 조합니다!

 

  • @Qualifier와 @Primary 어노테이션은 특정 빈을 선택할 수 있게 해준다.

  • 우선 순위는 @Qualifiler이 더 높다!

7일차

JPA

  • Java Persistence API의 약자이다

     

  • 객체와 관계형 데이터베이스의 테이블을 짝지어 데이터를 영구적으로 저장할 수 있도록 정해진 Java진영의 규칙이다.

  • 테이블에 대응되는 Entity Class를 만들어야한다.

  • findByName method

    • 함수 이름만 작성하면 알아서 SQL이 만들어진다.

    • find : 1개의 데이터만 가져온다.

    • By : 뒤에 붙는 필드 이름으로 WHERE절이 작성된다.

    • select * from user where name = ? 의 SQL문이 완성된다.

  • By앞 구절

    • find : 반환 타입은 객체, Optional<타입>

    • findAll : 쿼리 결과가 N개인 경우 반환 타입은 List<타입>

    • exists : 쿼리 결과가 존재하는지 확인 반환 boolean

    • count : 쿼리 결과 개수를 센다. 반환 long

  • By뒷 구절

    • GreaterThan : 초과

    • GreaterThanEqual : 이상

    • LessThan : 미만

    • LessThanEqual : 이하

    • Between : 사이에

    • StartsWith : ~로 시작하는

    • EndsWith : ~로 끝나는

8일차

@Transactional

  • 로직이 정상적으로 작동하면 DB에 적용된다.

  • 로직에 문제가 발생하면 @Transactional으로 rollback된다.

  • 영속성 컨텍스트가 생긴다.

    • 반환받은 객체에 변경이 생기면 자동으로 save method를 실행하여 DB에 적용시킨다.

  • 쓰기 지연능력이 생긴다.

    • commit이 되는 시점에 SQL을 모아서 실행시킨다.

  • 1차캐싱능력이 생긴다.

    • 같은 쿼리가 실행된다면 최초1회 쿼리만 실행된다.

9일차

  • 책 등록기능, 대출기능, 반납기능 구현

  • 대출기능과 반납기능의 HTTP Body스펙이 동일해도 새로운 DTO를 만드는 것이 좋다!

  • 이후에 대출기능이나 반납기능에 기능추가가 생길경우를 대비하여 만드는 것이 좋다.

 

2주차 후기

  • JPA를 배우면서 놀라웠다. 메소드명으로 SQL쿼리를 만들다니?!?!

  • 기본적인 CRUD를 만들때는 생산성이 향상되겠구나 싶었다.

  • 하지만 복잡한 SQL을 만들려면은 더 깊게 공부해야된다고 느겼다.

  • 과제중 JPA로 Group by를 사용하려면 어려운 방법은 사용해야했는데 너무 어려워서 포기를 해버렸다.

  • 기회가 된다면 JPA를 조금더 심층적으로 공부를 해야겠다.

  • @Transactional 기능 또한 놀라웠다. 영속성 컨텍스트로 변경사항이 있다면 자동으로 DB에 반영해주는게 좋은 기능 같다.

댓글을 작성해보세요.

채널톡 아이콘