Spring/JPA

잔디심는 정원사
[JPA] MultipleBagFetchException와 N+1문제 동시에 해결하기
·Spring/JPA
안녕하세요! 오늘은 JPA를 사용하다보면 한 번쯤 만나게 되는 에러인 N+1문제와 MultipleBagFetchException문제를 해결하는 방법에 대해 공유하고자 합니다. 🥲 문제 상황 제 프로젝트에서 한 엔티티가 2개의 연관된 엔티티를 List 타입으로 가지고 있었습니다. 그리고 게시글 전체를 조회할 때 JobPost의 WorkDay(요일)와 Job(하는 일)은 모두 보여줘야 했습니다. { "data": { "numOfPost": 0, "posts": [ { "jobPostId": null, "title": "string", "storeName": "string", "latitude": 0.0, "longitude": 0.0, "salary": 0, "salaryType": "연봉", "curren..
[JPA] entity에서 생성시간, 수정시간 반영하는 법
·Spring/JPA
생성할 때의 시간과 수정할 때의 시간을 저장하는 방법에는 뭐가 있을까? 가장 직관적인 방법은 생성할 때와 수정할 때마다 LocalDateTime.now()를 호출해서 직접 setter로 값을 넣어주는 방법이다. 하지만 매번 이런 작업을 하는 것은 여간 귀찮은 일이 아니다. 그래서 보통은 @CreatedDate와 @LastModifiedDate를 사용한다. CreatedDate : Entity가 생성되어 저장될 때 시간이 자동으로 저장 LastModifiedDate : 조회한 Entity의 값을 변경할 때 시간이 자동으로 저장 내가 사용하는 Entity에 직접 이 어노테이션을 붙이지 말고, 생성시간과 수정시간만 따로 BaseTimeEntity에 저장해 이 entity를 상속하도록 한다. BaseTimeEn..
[JPA] Querydsl에서 ElementCollection Projection 할 때 에러-org.hibernate.QueryException: not an entity
·Spring/JPA
Querydsl을 사용해서 Entity-> DTO에 Projections.constructor를 사용해 projection 하던 중 org.hibernate.QueryException: not an entity 문제가 발생 @Override public Page findAllTodosByCreatedDate(Pageable pageable){ List content=queryFactory .select(new QTodoDto_GetAllTodo(todo.todoId, todo.title, todo.description, todo.tags, todo.isCompleted, todo.createdAt, todo.updatedAt)) .where(isDeletedCheck()) .orderBy(todo.cre..
MapStruct를 이용해 Dto->Entity 변환하기
·Spring/JPA
의존성 추가 implementation 'org.mapstruct:mapstruct:1.4.2.Final' annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final' Entity와 Dto 구현 public abstract class TodoDto { @Getter @AllArgsConstructor @Builder public static class CreateRequest{ private String title; private String description; private List tags=new ArrayList(); } } @Entity @NoArgsConstructor @AllArgsConstructor @Data @Builder ..
[JPA] 연관관계 매핑-양방향 연관관계
·Spring/JPA
1. 단방향 vs 양방향1.1.  단방향한 쪽만 참조하는 것 1.2. 양방향양쪽 모두 서로 참조하는 것 사진을 보면 알 수 있듯이 방향은 객체관계에만 존재하고 테이블 관계는 항상 양방향2. 양방향 연관관계2.1. 객체 연관관계회원→팀 (Member.team) : 다대일 관계팀→회원 (Team.members) : 일대다 관계 2.2. 테이블 연관관계외래 키 하나로 양방향으로 조회할 수 있다.3. 양방향 연관관계 매핑들어가기 앞서 . . .회원→팀 (Member.team) : 다대일 관계팀→회원 (Team.members) : 일대다 관계3.1. 매핑한 회원 엔티티@Entitypublic class Member { @Id @GeneratedValue(strategy = GenerationType.I..
minsu20
'Spring/JPA' 카테고리의 글 목록