jpa

Spring/오류

JPA Cascade, orphanRemoval) 싱글벙글 내 테스트 코드의 문제점을 찾아보자

문제가 발생한 Controller UserControllerTest 그냥 봤을 때 전혀 문제 없이 진행할 수 있는 테스트입니다. User 관련한 Test 코드를 실행했을 때 상황을 보겠습니다. 유저 관련 Test만 진행했을 때 전혀 문제없이 통과합니다. 순서를 어떻게 해도 통과합니다. 단순 회원가입 기능만 작성했기 때문에 그렇게 꼬일 일이 없습니다. 그럼 전체 테스트를 돌려봤을 때 상황을 살펴보겠습니다. 전체 테스트 돌렸을 때 발생한 문제 UserControllerTest만 실패 다른 테스트는 리팩토링 과정 중에 아직 수정하지 않고 UserTest 쪽 먼저 진행 중에 글을 작성한 것입니다. 신경쓰지 않아도 됩니다. 대체 왜 UserControllerTest가 실패했을까요? 처음 이 문제를 해결하기 위해서..

Spring/오류

No enum constant: QueryDSL에서 Enum타입을 어떻게 받아서 처리할 수 있을까?

예외 발생 String으로 받으면? 되게 심플한 예외입니다. 먼저 Entity와 Enum을 보겠습니다. Post Entitiy입니다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Post extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "post_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; private String thumbnail; @Column(l..

JPA

Querydsl: OneToMany 관계에서 Projection DTO 값 List를 어떻게 갖고올까?

이 코드의 목적 제목, 글쓴이, 제목 + 내용 등을 통한 게시글 검색 기능입니다. 게시글 리스트를 불러올 때 해시태그도 보여줘야 하기 때문에 List값이 필요합니다. 이 오류는 왜 발생했을까? Entity입니다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Post extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "post_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private Us..

Spring/오류

com.querydsl.core.types.ExpressionException

이 코드의 목적 제목, 글쓴이, 제목 + 내용을 통한 게시글 검색 기능입니다. 이 오류는 왜 발생했을까? 먼저 QueryDSL을 작성한 코드를 보겠습니다. public Page search(PostSearchCondition condition, Pageable pageable) { List content = queryFactory .select(Projections.constructor(PostListResponseDto.class, post.id, user.id, user.nickname, post.thumbnail, post.title, post.content, post.hits, post.category, post.comment.size(), post.postLike.size(), post.crea..

Spring/오류

JPA: Parameter value [1] did not match expected type

Parameter value [1] did not match expected type 내가 만든 쿼리 유튜브 댓글처럼, 대댓글을 불러오기 위한 쿼리를 생성했다. 이 api를 호출했을 때, 부모 댓글을 기준으로 자식 댓글을 불러온다. 예외 발생 어.. 내가 원하는 값은 parentId를 기준으로 comment를 불러오는 건데 왜 예외가 발생하지? 예외 발생 원인 쿼리를 자세히 보자. c.parent 자체는 객체, parentId는 Long타입이기 때문에 바인딩이 안 돼서 발생한 예외다. Comment Entity를 살펴보자 되게 사소한 실수지만, 누구나 접할 수 있는 실수다. 올바른 쿼리로 바꾸기 정상 동작함을 알 수 있다!

JPA

JPA: 게시글 전체 조회 N + 1를 어떻게 처리할까?

0. 배경JPA로 개발하면서 N + 1 문제를 만나 헤맸던 부분과 제대로 처리하지 않으면 성능 저하, 장애로 이어질 수 있다는 부분을 깨닫고 정리하였습니다.  1. JPA: N + 1 문제정의N + 1 문제는 ORM 기술에서 특정 객체를 대상으로 수행한 쿼리가 해당 객체가 가지고 있는 연관관계를 조회하게 되면서 N번 추가적인 쿼리가 발생하는 문제입니다. 예시간단하게 구조를 살펴보겠습니다.1. POST는 LIKE, USER, COMMENT를 갖고 있습니다. 2. PostRepository에서 여러 Post를 조회하는 메소드를 호출하면 1개의 SELECT 쿼리로 POST가 조회 되고,FetchType.LAZY 설정으로 인해 LIKE, USER, COMMENT는 프록시 객체가 생성됩니다. 3. 해당 컬렉션을 ..

초보병일이
'jpa' 태그의 글 목록