Skip to content

Commit eba2a63

Browse files
committed
[refactor] N+1 문제 해결
1 parent 9662220 commit eba2a63

File tree

15 files changed

+224
-15
lines changed

15 files changed

+224
-15
lines changed

src/main/generated/com/moplus/moplus_server/domain/publish/domain/QPublish.java renamed to src/main/generated/com/moplus/moplus_server/admin/publish/domain/QPublish.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.moplus.moplus_server.domain.publish.domain;
1+
package com.moplus.moplus_server.admin.publish.domain;
22

33
import static com.querydsl.core.types.PathMetadataFactory.*;
44

@@ -15,7 +15,7 @@
1515
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
1616
public class QPublish extends EntityPathBase<Publish> {
1717

18-
private static final long serialVersionUID = 1565569153L;
18+
private static final long serialVersionUID = 1641302032L;
1919

2020
public static final QPublish publish = new QPublish("publish");
2121

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.moplus.moplus_server.client.submit.domain;
2+
3+
import static com.querydsl.core.types.PathMetadataFactory.*;
4+
5+
import com.querydsl.core.types.dsl.*;
6+
7+
import com.querydsl.core.types.PathMetadata;
8+
import javax.annotation.processing.Generated;
9+
import com.querydsl.core.types.Path;
10+
11+
12+
/**
13+
* QChildProblemSubmit is a Querydsl query type for ChildProblemSubmit
14+
*/
15+
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
16+
public class QChildProblemSubmit extends EntityPathBase<ChildProblemSubmit> {
17+
18+
private static final long serialVersionUID = -1656142683L;
19+
20+
public static final QChildProblemSubmit childProblemSubmit = new QChildProblemSubmit("childProblemSubmit");
21+
22+
public final com.moplus.moplus_server.global.common.QBaseEntity _super = new com.moplus.moplus_server.global.common.QBaseEntity(this);
23+
24+
public final NumberPath<Long> childProblemId = createNumber("childProblemId", Long.class);
25+
26+
//inherited
27+
public final DateTimePath<java.time.LocalDateTime> createdDate = _super.createdDate;
28+
29+
public final NumberPath<Long> id = createNumber("id", Long.class);
30+
31+
public final NumberPath<Long> memberId = createNumber("memberId", Long.class);
32+
33+
public final NumberPath<Long> publishId = createNumber("publishId", Long.class);
34+
35+
public final EnumPath<ChildProblemSubmitStatus> status = createEnum("status", ChildProblemSubmitStatus.class);
36+
37+
//inherited
38+
public final DateTimePath<java.time.LocalDateTime> updatedDate = _super.updatedDate;
39+
40+
public QChildProblemSubmit(String variable) {
41+
super(ChildProblemSubmit.class, forVariable(variable));
42+
}
43+
44+
public QChildProblemSubmit(Path<? extends ChildProblemSubmit> path) {
45+
super(path.getType(), path.getMetadata());
46+
}
47+
48+
public QChildProblemSubmit(PathMetadata metadata) {
49+
super(ChildProblemSubmit.class, metadata);
50+
}
51+
52+
}
53+
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.moplus.moplus_server.client.submit.domain;
2+
3+
import static com.querydsl.core.types.PathMetadataFactory.*;
4+
5+
import com.querydsl.core.types.dsl.*;
6+
7+
import com.querydsl.core.types.PathMetadata;
8+
import javax.annotation.processing.Generated;
9+
import com.querydsl.core.types.Path;
10+
11+
12+
/**
13+
* QProblemSubmit is a Querydsl query type for ProblemSubmit
14+
*/
15+
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
16+
public class QProblemSubmit extends EntityPathBase<ProblemSubmit> {
17+
18+
private static final long serialVersionUID = 1682818189L;
19+
20+
public static final QProblemSubmit problemSubmit = new QProblemSubmit("problemSubmit");
21+
22+
public final com.moplus.moplus_server.global.common.QBaseEntity _super = new com.moplus.moplus_server.global.common.QBaseEntity(this);
23+
24+
//inherited
25+
public final DateTimePath<java.time.LocalDateTime> createdDate = _super.createdDate;
26+
27+
public final NumberPath<Long> id = createNumber("id", Long.class);
28+
29+
public final NumberPath<Long> memberId = createNumber("memberId", Long.class);
30+
31+
public final NumberPath<Long> problemId = createNumber("problemId", Long.class);
32+
33+
public final NumberPath<Long> publishId = createNumber("publishId", Long.class);
34+
35+
public final EnumPath<ProblemSubmitStatus> status = createEnum("status", ProblemSubmitStatus.class);
36+
37+
//inherited
38+
public final DateTimePath<java.time.LocalDateTime> updatedDate = _super.updatedDate;
39+
40+
public QProblemSubmit(String variable) {
41+
super(ProblemSubmit.class, forVariable(variable));
42+
}
43+
44+
public QProblemSubmit(Path<? extends ProblemSubmit> path) {
45+
super(path.getType(), path.getMetadata());
46+
}
47+
48+
public QProblemSubmit(PathMetadata metadata) {
49+
super(ProblemSubmit.class, metadata);
50+
}
51+
52+
}
53+

src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.moplus.moplus_server.domain.problem.service.mapper;
22

3+
import com.moplus.moplus_server.admin.problem.dto.request.ChildProblemUpdateRequest;
34
import com.moplus.moplus_server.domain.problem.domain.childProblem.ChildProblem;
4-
import com.moplus.moplus_server.domain.problem.dto.request.ChildProblemUpdateRequest;
55
import java.util.ArrayList;
66
import java.util.LinkedHashSet;
77
import java.util.List;
@@ -11,7 +11,7 @@
1111

1212
@Generated(
1313
value = "org.mapstruct.ap.MappingProcessor",
14-
date = "2025-03-04T02:15:33+0900",
14+
date = "2025-03-14T20:25:51+0900",
1515
comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.10 (JetBrains s.r.o.)"
1616
)
1717
@Component

src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.moplus.moplus_server.domain.problem.service.mapper;
22

3+
import com.moplus.moplus_server.admin.problem.dto.request.ProblemPostRequest;
4+
import com.moplus.moplus_server.admin.problem.dto.request.ProblemUpdateRequest;
35
import com.moplus.moplus_server.domain.problem.domain.practiceTest.PracticeTestTag;
46
import com.moplus.moplus_server.domain.problem.domain.problem.Problem;
57
import com.moplus.moplus_server.domain.problem.domain.problem.ProblemCustomId;
68
import com.moplus.moplus_server.domain.problem.domain.problem.ProblemType;
7-
import com.moplus.moplus_server.domain.problem.dto.request.ProblemPostRequest;
8-
import com.moplus.moplus_server.domain.problem.dto.request.ProblemUpdateRequest;
99
import java.util.ArrayList;
1010
import java.util.LinkedHashSet;
1111
import java.util.List;
@@ -15,7 +15,7 @@
1515

1616
@Generated(
1717
value = "org.mapstruct.ap.MappingProcessor",
18-
date = "2025-03-04T02:15:33+0900",
18+
date = "2025-03-14T20:25:51+0900",
1919
comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.10 (JetBrains s.r.o.)"
2020
)
2121
@Component

src/main/generated/com/moplus/moplus_server/domain/member/domain/QMember.java renamed to src/main/generated/com/moplus/moplus_server/member/domain/QMember.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.moplus.moplus_server.domain.member.domain;
1+
package com.moplus.moplus_server.member.domain;
22

33
import static com.querydsl.core.types.PathMetadataFactory.*;
44

@@ -15,7 +15,7 @@
1515
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
1616
public class QMember extends EntityPathBase<Member> {
1717

18-
private static final long serialVersionUID = -705761779L;
18+
private static final long serialVersionUID = -1541748259L;
1919

2020
public static final QMember member = new QMember("member1");
2121

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.moplus.moplus_server.statistic.member;
2+
3+
import static com.querydsl.core.types.PathMetadataFactory.*;
4+
5+
import com.querydsl.core.types.dsl.*;
6+
7+
import com.querydsl.core.types.PathMetadata;
8+
import javax.annotation.processing.Generated;
9+
import com.querydsl.core.types.Path;
10+
11+
12+
/**
13+
* QCorrectConceptTagStatistics is a Querydsl query type for CorrectConceptTagStatistics
14+
*/
15+
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
16+
public class QCorrectConceptTagStatistics extends EntityPathBase<CorrectConceptTagStatistics> {
17+
18+
private static final long serialVersionUID = -313521578L;
19+
20+
public static final QCorrectConceptTagStatistics correctConceptTagStatistics = new QCorrectConceptTagStatistics("correctConceptTagStatistics");
21+
22+
public final com.moplus.moplus_server.global.common.QBaseEntity _super = new com.moplus.moplus_server.global.common.QBaseEntity(this);
23+
24+
public final NumberPath<Long> conceptTagId = createNumber("conceptTagId", Long.class);
25+
26+
public final NumberPath<Integer> correctCount = createNumber("correctCount", Integer.class);
27+
28+
//inherited
29+
public final DateTimePath<java.time.LocalDateTime> createdDate = _super.createdDate;
30+
31+
public final NumberPath<Long> id = createNumber("id", Long.class);
32+
33+
//inherited
34+
public final DateTimePath<java.time.LocalDateTime> updatedDate = _super.updatedDate;
35+
36+
public QCorrectConceptTagStatistics(String variable) {
37+
super(CorrectConceptTagStatistics.class, forVariable(variable));
38+
}
39+
40+
public QCorrectConceptTagStatistics(Path<? extends CorrectConceptTagStatistics> path) {
41+
super(path.getType(), path.getMetadata());
42+
}
43+
44+
public QCorrectConceptTagStatistics(PathMetadata metadata) {
45+
super(CorrectConceptTagStatistics.class, metadata);
46+
}
47+
48+
}
49+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.moplus.moplus_server.statistic.member;
2+
3+
import static com.querydsl.core.types.PathMetadataFactory.*;
4+
5+
import com.querydsl.core.types.dsl.*;
6+
7+
import com.querydsl.core.types.PathMetadata;
8+
import javax.annotation.processing.Generated;
9+
import com.querydsl.core.types.Path;
10+
11+
12+
/**
13+
* QIncorrectConceptTagStatistics is a Querydsl query type for IncorrectConceptTagStatistics
14+
*/
15+
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
16+
public class QIncorrectConceptTagStatistics extends EntityPathBase<IncorrectConceptTagStatistics> {
17+
18+
private static final long serialVersionUID = 1288752209L;
19+
20+
public static final QIncorrectConceptTagStatistics incorrectConceptTagStatistics = new QIncorrectConceptTagStatistics("incorrectConceptTagStatistics");
21+
22+
public final com.moplus.moplus_server.global.common.QBaseEntity _super = new com.moplus.moplus_server.global.common.QBaseEntity(this);
23+
24+
public final NumberPath<Long> conceptTagId = createNumber("conceptTagId", Long.class);
25+
26+
//inherited
27+
public final DateTimePath<java.time.LocalDateTime> createdDate = _super.createdDate;
28+
29+
public final NumberPath<Long> id = createNumber("id", Long.class);
30+
31+
public final NumberPath<Integer> incorrectCount = createNumber("incorrectCount", Integer.class);
32+
33+
//inherited
34+
public final DateTimePath<java.time.LocalDateTime> updatedDate = _super.updatedDate;
35+
36+
public QIncorrectConceptTagStatistics(String variable) {
37+
super(IncorrectConceptTagStatistics.class, forVariable(variable));
38+
}
39+
40+
public QIncorrectConceptTagStatistics(Path<? extends IncorrectConceptTagStatistics> path) {
41+
super(path.getType(), path.getMetadata());
42+
}
43+
44+
public QIncorrectConceptTagStatistics(PathMetadata metadata) {
45+
super(IncorrectConceptTagStatistics.class, metadata);
46+
}
47+
48+
}
49+

src/main/java/com/moplus/moplus_server/domain/problem/domain/childProblem/ChildProblem.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import lombok.Builder;
2525
import lombok.Getter;
2626
import lombok.NoArgsConstructor;
27+
import org.hibernate.annotations.BatchSize;
2728

2829
@Getter
2930
@Entity
@@ -34,6 +35,7 @@ public class ChildProblem extends BaseEntity {
3435
@GeneratedValue(strategy = GenerationType.IDENTITY)
3536
@Column(name = "child_problem_id")
3637
Long id;
38+
@BatchSize(size = 100)
3739
@ElementCollection
3840
@CollectionTable(name = "child_problem_concept", joinColumns = @JoinColumn(name = "child_problem_id"))
3941
@Column(name = "concept_tag_id")

src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class Problem extends BaseEntity {
6060
@Convert(converter = StringListConverter.class)
6161
@Column(columnDefinition = "TEXT")
6262
List<String> prescriptionImageUrls;
63+
6364
@ElementCollection
6465
@CollectionTable(name = "problem_concept", joinColumns = @JoinColumn(name = "problem_id"))
6566
@Column(name = "concept_tag_id")
@@ -75,7 +76,7 @@ public class Problem extends BaseEntity {
7576

7677
private boolean isConfirmed;
7778

78-
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
79+
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
7980
@JoinColumn(name = "problem_id")
8081
@OrderColumn(name = "sequence")
8182
private List<ChildProblem> childProblems = new ArrayList<>();

src/main/java/com/moplus/moplus_server/domain/problem/repository/ProblemRepository.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ default void existsByProblemAdminIdElseThrow(ProblemCustomId problemCustomId) {
2727

2828
@Query("SELECT DISTINCT p FROM Problem p " +
2929
"LEFT JOIN FETCH p.childProblems c " +
30-
"LEFT JOIN FETCH p.conceptTagIds " +
31-
"LEFT JOIN FETCH c.conceptTagIds " +
3230
"WHERE p.id = :id")
3331
Optional<Problem> findByIdWithFetchJoin(@Param("id") Long id);
3432

src/main/java/com/moplus/moplus_server/domain/problem/service/ProblemGetService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.moplus.moplus_server.domain.problem.service;
22

3-
import com.moplus.moplus_server.domain.problem.domain.problem.Problem;
43
import com.moplus.moplus_server.admin.problem.dto.response.ProblemGetResponse;
4+
import com.moplus.moplus_server.domain.problem.domain.problem.Problem;
55
import com.moplus.moplus_server.domain.problem.repository.ProblemRepository;
66
import lombok.RequiredArgsConstructor;
77
import org.springframework.stereotype.Service;

src/main/resources/application-datasource.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,8 @@ spring:
1515
properties:
1616
hibernate:
1717
dialect: org.hibernate.dialect.MySQLDialect
18-
default_batch_fetch_size: 1000
18+
default_batch_fetch_size: 100
19+
20+
21+
1922

src/main/resources/application-local.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ spring:
88
show_sql: true
99
format_sql: true
1010
use_sql_comments: true
11+
highlight_sql: true
1112
hibernate:
1213
ddl-auto: update
1314

src/main/resources/application-server.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ server:
44
max-connections: 8192
55

66
threads:
7-
max: 300
7+
max: 200
88
min-spare: 10

0 commit comments

Comments
 (0)