[클론 코딩] 커피 주문 관리 (3)

suRan·2022년 9월 1일
0

🍃 SpringBoot

목록 보기
21/24
  • Service
    Service의 역할은 Dao가 DB에서 받아온 데이터를 전달받아 가공하는 것이다. Service가 알맞은 정보를 가공하는 과정을 '비즈니스 로직을 수행한다.' 라고 합니다. Service가 비즈니스 로직을 수행하고 데이터베이스에 접근하는 DAO를 이용해서 결과값을 받아 옵니다.

  • Dao
    DB의 data에 접근하기 위한 객체
    DAO 는 쉽게 말해서 Mysql 서버에 접근하여 SQL문을 실행할 수 있는 객체입니다.

  • Optional.ofNullable()
    null인지 아닌지 확신할 수 없는 객체를 담고 있는 Optional 객체를 생성한다.
    출처 : https://www.daleseo.com/java8-optional-after/

  • @TestInstance
    테스트 인스턴스의 생성 단위를 변경하기 위해 사용하는 어노테이션
    JUnit은 설정된 테스트 단위로 테스트 객체(테스트 인스턴스)를 만든다.
    테스트 인스턴스는 기본적으로 메소드 단위 생명주기이다.
    @TestIntance는 메소드끼리 영향을 주는 테스트 케이스를 테스트할 때 사용한다.
    @TestInstance(Lifecycle.PER_CLASS) 를 선언한 클래스는 클래스 단위 생명주기를 가진다.
    https://velog.io/@suran-kim/springBoot

  • 컨트롤러의 필요성
    많은 종류의 서비스를 한 클래스를 만들어서 꽉꽉 몰아 처리할 게 아니라 Controller라는 중간 제어자를 만들어서 A서비스에 대한것은 A-Controller가 맡고 B서비스는 B-Controller 이런식으로 역할에 따라 설계를 하고 코딩을하면 개발비용이나 유지보수비용이 대폭 줄어들기 때문에 Controller를 사용
    스프링에서의 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있다.

  • @GetMapping
    HTTP GET 요청을 특정 핸들러 메소드에 맵핑하기위한 annotation.

  • Repository의 구현체를 영구저장소 API를 이용해 구현
    Repository의 Interface는 도메인 레이어, Repository의 구현체는 영속성 레이어에 속한다

  • repository와 DAO

    • “repository는 객체의 Collection을 저장, 검색 하는 등의 동작을 캡슐화 한다” 고 한다. 여기서 Collection은 java의 Collection class를 말한다기보다 객체의 모임(저장 검색 등이 가능한)이라고 생각하면 될 것 같다.
    • DAO는 storage system에 더 가까운 개념이고 상대적으로 low level concept, Repository는 Domain객체에 가까운 개념이며 상대적으로 high level concept
    • DAO는 Repository를 사용하여 구현할 수 없지만, Repository는 DAO를 사용해 구현할 수 있다.
      https://isaac56.github.io/etc/2021/08/29/difference_DAO_Repository/
  • update()
    JdbcTemplate는 DAO객체에서 DB와 연동하기 위해 SQL 연산들을 수행 할 수 있도록 도와주는 기술인데,
    update()는 SQL 연산을 통해 데이터베이스를 갱신시켜줄 때(INSERT, DELETE, UPDATE) 사용하는 메소드
    https://withseungryu.tistory.com/92

  • 테스트 시마다 테스트용 인스턴스의 id가 달라지는 문제

    1. 테스트용 객체 생성 코드를 static 으로 선언
    2. @TestInstance(TestInstance.Lifecycle.PER_CLASS) 사용
  • git :

profile
개발 공부를 해라

0개의 댓글