inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 3기 / 백엔드 프로젝트] 2주차 정리

와땅깡
0

해당글은 [입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기: 정보근]

https://www.inflearn.com/course/%EC%9E%85%EB%AC%B8%EC%9E%90-spring-boot-kotlin-%ED%8F%AC%ED%8A%B8%ED%8F%B4%EB%A6%AC%EC%98%A4/dashboard

강의를 보고 공부한 내용입니다.

2주차 부터는 실습 위주의 강의로 공부 내용의 경우 어노테이션 중심으로 정리했습니다.

 

공부 내용 정리

1. 도메인 레이어

도메인 레이어 설명

관련 어노테이션

@Entity // JPA 엔티티 클래스 지정.
@Id // 기본 키(PK) 지정.
@GeneratedValue // PK 자동 생성 전략 설정.
@Column // 데이터베이스 컬럼과 매핑.  
@CreatedDate // 엔티티 생성 날짜 자동 저장. 
@OneToMany // 1:N 관계 설정.       
@ManyToOne // N:1 관계 설정.       
@JoinColumn //외래 키 지정.         
@OneToOne //1:1 관계 설정.       
@ManyToMany // N:M 관계 설정.  

Spring Data JPA - JpaRepository 설명

JpaRepository는 Spring Data JPA에서 제공하는 인터페이스로, 기본적인 CRUD 메서드를 제공합니다.

public interface UserRepository extends JpaRepository<User, Long> {}

기본 CRUD 메서드

save(entity) // 엔티티 저장 또는 수정
findById(id) // ID(PK)로 조회
existsById(id) // 존재 여부 확인
delete(entity) // 엔티티 삭제
deleteById(id) // ID(PK)로 삭제
findAll() // 모든 데이터 조회
count() // 전체 데이터 개수 조회

메서드 네이밍 규칙

도메인에 종속되는 기능이라도 메소드명 네이밍 규칙을 따르면 그에 맞는 쿼리를 자동으로 생성해주기도 합니다. 따라서 기본적인 명명 규칙을 찾아 정리해보았습니다.


 

2. 프레젠테이션 레이어

프레젠테이션 레이어 설명

프레젠테이션 레이어는 HTTP 요청을 받아 서비스 계층과 상호작용하며, 클라이언트에 응답을 반환하는 역할을 수행합니다. 컨트롤러, DTO, 서비스, 인터셉터로 구성됩니다.

관련 어노테이션 정리

@Controller     // Spring MVC 컨트롤러 역할. 뷰를 반환.               
@RestController // @Controller + @ResponseBody 조합. JSON 반환. 
@RequestMapping // 특정 URL과 컨트롤러 메서드 매핑.                     
@GetMapping     // GET 요청 처리.                               
@PostMapping    // POST 요청 처리.                              
@Service        // 비즈니스 로직을 담당하는 서비스 클래스에 붙임.               
@Repository     // 데이터베이스와 연동되는 DAO 클래스에 붙임.                
@Component      // Spring Bean으로 등록하는 가장 기본적인 어노테이션.        
@Transactional  // 트랜잭션 관리. DB 작업 중 실패 시 롤백.                
@Configuration  // Spring 설정 클래스에 붙임.    

 

4. 테스트 코드

테스트 코드의 작성은 기능을 개발하는 것만큼 중요한 작업입니다.

코드의 정확성, 유지보수성, 신뢰성을 보장하며, 개발 속도를 높이는 데에도 중요한 역할을 합니다.

단위 테스트 vs 통합 테스트 비교

테스트 관련 어노테이션 정리

@ExtendWith           // JUnit5와 스프링 테스트 환경 통합.               
@InjectMocks          // @Mock 객체를 테스트 대상 클래스에 주입.            
@Mock                 // 테스트에서 Mock 객체 생성.                    
@SpringBootTest       // Spring Boot 애플리케이션 컨텍스트 로드 후 테스트 실행. 
@AutoConfigureMockMvc // MockMvc 자동 설정.                       
@DisplayName          // 테스트 실행 시 표시될 이름 지정.                  

 

미션

미션3 - REST API 설계하기

API 명세서 작성 도구 선택

API 명세서 작성 도구로 어떤 도구를 선택해야할지 미션 전 고민이 많았습니다.

클라이언트 개발을 했을떈 보통 백엔드 팀원 분들이 스웨거 문서로 프로젝트 진행 시 사용을 했었는데 현재 Swagger에 대한 학습이 부족한 상태였기에 다른 방법을 찾아보았습니다.

 

대안 도구 = 포스트맨 문서 활용

포스트맨에서도 문서를 작성할 수 있고, 해당 내용을 공유할 수있음을 알게되었고 스웨거 적용 전 포스트맨 문서를 활용하기로 결정하였습니다.

 

200 외 오류 응답코드

오류 코드 정리

코드 적용 규칙

1. 권한(Role)에 따라 접근이 제한되는 경우 → 403 Forbidden

- 예) 참여자(MEMBER)가 캡슐을 삭제하려고 하는 경우

→ 삭제 기능은 OWNER만 가능하므로, 권한 부족 → 403 응답 반환

1. 요청 데이터가 정상적으로 전달되었지만, 해당 리소스가 존재하지 않는 경우 → 404 Not Found

- 예) 존재하지 않는 userId로 게시글 조회 시

해당 리소스가 없으므로 404 반환


회고

GOOD

PROBLEM

TRY

백엔드 인프런워밍업클럽 백엔드 발자국

답변 0