회원 도메인 개발
구현 기능
회원 등록
회원 목록 조회
순서
회원 리포지토리 개발
회원 서비스 개발
회원 기능 테스트
회원 리포지토리 개발
리포지토리는 엔티티 매니저를 이용하여 데이터베이스에 접근할 수 있는 계층이다. 회원 리포지토리에서는 회원 저장, id로 회원 조회, 회원 전체 조회, 이름으로 회원 조회 4가지 기능을 구현했다.
회원 서비스 개발
서비스 계층은 실제 비즈니스 서비스 기능이 구현된 계층으로 중복 회원 검증이 포함된 회원 가입 기능과 회원 전체 조회, 회원 개별 조회
배운 것
1. 서비스 계층에 Transactional 어노테이션을 사용하는 이유
@Transactional을 서비스 계층에 거는 이유는 비즈니스 로직의 특징 때문입니다.
계좌이체를 떠올려보시면 다음과 같이 되는데요.
Service {
나의돈을 1000원 제거
상대방에게 돈을 1000원 추가
}
중간에 오류가 발생하면 두 로직이 함께 롤백되어야 합니다.
따라서 서비스 계층에 보통 트랜잭션을 사용합니다.
2. Autowired를 사용하면 스프링 빈에 등록되어 있는 MemberRepository를 인젝션하여 모두 같은 변수에 접근할 수 있다.
Autowired를 사용할 때 필드에 바로 Autowired를 사용하여 중간에 인젝션이 불가능하므로 Setter에 Autowired를 붙여서 Setter 인젝션을 할 수 있지만 실제로 개발 단계이후 중간에 변경하는 일은 없으므로 보통 생성자에 Autowired를 붙여서 생성자 인젝션을 사용하는 경우가 많다. 생성자가 하나인 경우에는 Autowired를 사용안해도 자동으로 해줌
3.
@AllArgsConstructor -> 모든 필드를 가지고 생성자를 만들어 준다.
@RequiredArgsConstructor -> final이 설정된 필드만 가지고 생성자를 만들어 준다.
회원 기능 테스트
테스트 요구사항
회원가입을 성공해야 한다.
회원가입을 할 때 같은 이름이 있으면 예외가 발생해야 한다.
배운 것
1. try catch는 발생한 예외를 처리해주는 함수이고 throws Exception은 발생한 예외를 현재 메소드를 호출한 메소드에게 떠넘긴다.
2. 실제 운영은 데이터베이스로 테스트는 메모리 모드로 구현한다. main과 test는 각각의 application.yml로 동작할 수 있으므로 test에 application.yml을 추가하고 메모리 모드로 변경하면 데이터베이스 없이 테스트를 할 수 있다.
'웹 개발 > Back End' 카테고리의 다른 글
실전! 스프링 부트와 JPA 활용1 - 주문 도메인 개발 (0) | 2022.01.07 |
---|---|
실전! 스프링 부트와 JPA 활용1 - 상품 도메인 개발 (0) | 2022.01.07 |
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 구현 준비 (0) | 2022.01.06 |
실전! 스프링 부트와 JPA 활용1 - 도메인 분석 설계 (0) | 2022.01.05 |
실전! 스프링 부트와 JPA 활용1 - 프로젝트 환경설정 (0) | 2022.01.05 |
댓글