Test environment

Layered-Architecture

관심사의 분리!

통합 테스트

  • 여러 모듈이 협력하는 기능을 통합적으로 검증하는 테스트
  • 일반적으로 작은 범위의 단위 테스트만으로는 기능 전체의 신뢰성을 보장할 수 없다.
  • 풍부한 단위 테스트 & 큰 기능 단위를 검증하는 통합 테스트

Library vs Framework (차이점)

ORM(Object-Relational Mapping)

  • 객체 지향 패러다임과 관계형 DB 패러다임의 불일치
  • 이전에는 개발자가 객체의 데이터를 한땀한땀 매핑하여 DB에 저장 및 조회(CRUD)
  • ORM을 사용함으로써 개발자는 단순 작업을 줄이고, 비즈니스 로직에 집중할 수 있다.

JPA

  • Java 진영의 ORM 기술 표준
  • 인터페이스이고, 여러 구현체가 있지만 보통 Hibernate를 많이 사용한다.
  • 반복적인 CRUD SQL을 생성 및 실행해주고, 여러 부가 기능들을 제공한다.
  • 편리하지만 쿼리를 직접 작성하지 않기 때문에, 어떤 식으로 쿼리가 만들어지고 실행되는지 명확하게 이해하고 있어야 한다.
  • Spring 진영에서는 JPA를 한번 더 추상화한 Spring Data JPA 제공
  • QueryDSL과 조합하여 많이 사용한다.(타입체크, 동적쿼리)
  • @Entity, @Id, @Column
  • @ManyToOne, @OneToMany, @OneToOne, @ManyToMany

© 2023 Lee. All rights reserved.