![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/IjpHv/btsvDkT5Thg/mY89m1C9W4KKznRySeisA0/img.png)
안녕하세요! 오늘은 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..
생성할 때의 시간과 수정할 때의 시간을 저장하는 방법에는 뭐가 있을까? 가장 직관적인 방법은 생성할 때와 수정할 때마다 LocalDateTime.now()를 호출해서 직접 setter로 값을 넣어주는 방법이다. 하지만 매번 이런 작업을 하는 것은 여간 귀찮은 일이 아니다. 그래서 보통은 @CreatedDate와 @LastModifiedDate를 사용한다. CreatedDate : Entity가 생성되어 저장될 때 시간이 자동으로 저장 LastModifiedDate : 조회한 Entity의 값을 변경할 때 시간이 자동으로 저장 내가 사용하는 Entity에 직접 이 어노테이션을 붙이지 말고, 생성시간과 수정시간만 따로 BaseTimeEntity에 저장해 이 entity를 상속하도록 한다. BaseTimeEn..
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..
의존성 추가 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 ..
1. 단방향 vs 양방향 1.1. 단방향 한 쪽만 참조하는 것 1.2. 양방향 양쪽 모두 서로 참조하는 것 사진을 보면 알 수 있듯이 방향은 객체관계에만 존재하고 테이블 관계는 항상 양방향 2. 양방향 연관관계 2.1. 객체 연관관계 회원→팀 (Member.team) : 다대일 관계 팀→회원 (Team.members) : 일대다 관계 2.2. 테이블 연관관계 외래 키 하나로 양방향으로 조회할 수 있다. 3. 양방향 연관관계 매핑 들어가기 앞서 . . . 회원→팀 (Member.team) : 다대일 관계 팀→회원 (Team.members) : 일대다 관계 3.1. 매핑한 회원 엔티티 @Entity public class Member { @Id @GeneratedValue(strategy = Generati..
- Total
- Today
- Yesterday
- Iterator Pattern
- 프로토타입 패턴
- restapi
- 플라이웨이트패턴
- dfs
- 상태 패턴
- 퍼싸드패턴
- jpa
- 빌더 패턴
- java문법
- 프록시패턴
- 컴포지트패턴
- FacadePattern
- idtoken
- 양방향연관관계
- 브리지 패턴
- 반복자 패턴
- UML 필요성
- n+1
- CompositePattern
- 구글로그인
- springsecurity
- 복합체 패턴
- docker
- Flutter
- Chain of Responsibility
- 책임연쇄패턴
- GithubActions
- 책임체인패턴
- 메멘토 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |