진행중인 최종 프로젝트를 각자 구현한 곳까지 병합해서 테스트를 진행해 보고 그 과정에서 발생한 문제점을 해결하였다. 이후엔 구현해야할 남은 부분 개발을 진행했다.
데이터의 유지보수성을 향상시키기 위해서 테이블을 효율적으로 분해하는 것으로 다음 단계를 걸칩니다.
모든 행을 고유하게 식별하는 열로써 두 행이 동일한 값을 가질 수 없고 NOTNULL입니다. 자동으로 인덱스가 생성되며 생성되는 규칙은 사용자가 정의할 수 있습니다.
다른 테이블의 기본 키인 테이블의 필드를 뜻합니다. 예를 들어 A테이블과 B테이블이 있을 때, A테이블의 PK를 B테이블의 외래키로 지정해서 테이블 간에 연관관계를 설정할 수 있습니다.
nullable=false 로 세팅된 칼럼에 값을 안넣어 주어서 정상작동을 하지 않았다.JwtAuthenticationFilter에서 필터링을 잘못하여 다른 에러가 발생하여도 동일한 에러코드가 나온다.///RootResponseDto.java
@JsonInclude(Include.NON_NULL)
@Builder
@Getter
public class RootResponseDto<T> {
String code;
String message;
T data;
}
//BoardController.java
@PostMapping
public ResponseEntity<?> createBoard(
@RequestBody BoardRequestDto boardRequestDto,
@AuthenticationPrincipal UserDetailsImpl userDetails) {
BoardResponseDto boardResponseDto = boardService.createBoard(boardRequestDto, userDetails.getUser());
return ResponseEntity.ok(RootResponseDto.builder()
.code("201")
.message("보드 생성 성공")
.data(boardResponseDto) //<-여기서 에러 발생!!
.build());
}
2번 때문에 뭐가 문제인지 알 수가 없어서 해결하기 어려웠다. 이것이 기존 코드인데
boardService.createBoard(boardRequestDto, userDetails);
service에 넘길때 userDetails를 따로 처리하지 않고 그대로 넘긴것을 볼 수 있다. 이를 다음과 같이 userDetails에서 User값만 뽑아와서 넘겨주니 해결되었다.
boardService.createBoard(boardRequestDto, userDetails.getUser());
보드에 사용자가 가입 신청을 하고 보드 생성자는 신청자 목록을 열람하며 신청을 수락/거절을 할 수 있는 api를 구현중이다. 그런데 데이터를 보내도 에러가 발생하는 것도 아닌데 중간테이블에 칼럼이 생성되지 않아 해결법을 찾는 중이다.
이것만 해결 된다면 진행될 순서는 다음과 같다. 따로 기존 api를 참고 하지않고 이렇게 로직을 짜면 되지 않을까? 라고 생각이 드는대로 나타내 보겠다.
현재 이 시나리오대로 코드작성은 완료한 상태이다. 내일 중간테이블 관련 문제를 해결하고 테스트를 해보아야겠다.