본문 바로가기

분류 전체보기45

[SpringDataJpa] findAll() n+1 문제 해결 HTML 삽입미리보기할 수 없는 소스 1. findAll() n+1 발생 원인 토의 프로젝트를 하며 게시판 목록 조회를 하던 중 findAll()을 사용하였는데 연관관계인 Member 조회 쿼리가 미친듯이 날라가는 것을 보고 멘붕이 왔다. 내가 알고 있는 배경 지식으로는 도무지 이해가 안 가는 상황이었다. 환경은 다음과 같다. BoardEntity @DynamicInsert // null 값 전달 시 insert 컬럼에서 제외,=> Default 값 적용 가능 @Entity @Getter @Table(name = "board") @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString public cl.. 2023. 8. 9.
[Spring] CustomReponseEntity HTML 삽입 미리보기할 수 없는 소스 1. CustomResponseEntity이란 API서버를 만들 때 json형태의 어떠한 값들을 리턴한다. 이때 우리는 여러가지의 객체들을 json으로 변환을 하고 추가로 statusCode, 메시지들을 클라이언트에게 전달한다. 이 값들의 어느 정도 공통적인 형태로 규격화 시키기 위하여 만든 것을 CustomReponseEntity라고 명칭하고 있으며, 해당 명칭은 사용자마다 다르고 그 공통적인 형태를 만드는 것도 사람마다 가지각색이라 정답이 없는 거 같다. 2. 다양한 형태의 API 리턴 값 API서버를 만들다보면 기본적으로 목록,단일 객체,등록,수정,삭제 등을 구현하게 된다. 그것들에 대한 리턴 값은 어떻게 되는지 확인 해보자. 2-1. 목록 조회 시 리턴 값 .. 2023. 8. 9.
[스프링부트] junit 테스트 코드(5/5) - 예외 테스트 HTML 삽입 미리보기할 수 없는 소스 1. 예외 테스트란 실제 코드를 작성할 때 개발자는 예외처리를 하게 된다. 그에 따라 테스트코드를 작성할 때 예외 처리가 개발자가 의도한대로 동작하는지에 대해서도 테스트 코드를 통한 검증이 필요하다. 2. 예외 테스트 작성 방법 Service코드 /** * 게시판 생성 * @param boardCreateDto */ public Board createBoard(BoardCreateDto boardCreateDto) { // memberNo를 통해 회원 엔티티 조회 => 조회 결과가 없다면 예외 Member findMember = memberRepository.findById(boardCreateDto.getMemberNo()).orElseThrow(() -> new.. 2023. 8. 8.
[Java] Generic 사용법 HTML 삽입 미리보기할 수 없는 소스 1. Generic타입 정의 클래스, 인터페이스, 메서드 등을 일반화하여 타입의 안전성을 제공하는 타입. 클래스나 메서드를 선언할 때 실제 사용될 타입을 지정하지 않는다. 하나의 유연한 클래스를 정의하고, 실제 사용부에서 타입에 대한 제한을 자유롭게 할 수 있어 편하다. 사용 시점에 구체적인 타입을 결정할 수 있다. 코드의 재사용성과 타입 안정성을 높아짐 2. Generic타입 사용 이유 예를 들어 공통으로 사용하는 CustomReponseEntity를 정의한다고 생각해보자. public class CommonResponseEntity implements Serializable { @JsonInclude(JsonInclude.Include.NON_NULL) priv.. 2023. 8. 6.