![](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..
- Total
- Today
- Yesterday
- 브리지 패턴
- springsecurity
- Flutter
- 복합체 패턴
- 반복자 패턴
- dfs
- Iterator Pattern
- 책임체인패턴
- GithubActions
- UML 필요성
- 컴포지트패턴
- restapi
- CompositePattern
- 책임연쇄패턴
- 프록시패턴
- FacadePattern
- java문법
- Chain of Responsibility
- 상태 패턴
- 메멘토 패턴
- docker
- 구글로그인
- jpa
- 플라이웨이트패턴
- 빌더 패턴
- idtoken
- 프로토타입 패턴
- 퍼싸드패턴
- 양방향연관관계
- n+1
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |