inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

아키텍처 테스트에 대해 질문있습니다.

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

강의를 NestJS로 적용해 따라가고 있습니다. 마지막 “ArchUnit을 이용한 아키텍처 테스트” 파트에서 Node/NestJS 환경에서는 어떤 방식으로 아키텍처 규칙을 테스트/검증하는 것이 좋은지 궁금합니다. 자바에서는 ArchUnit으로 레이어 규칙, 패키지 의존성, 순환 참조 등을 명시적으로 검사할 수 있는데, Node 진영에서는 유사한 도구로 무엇을 추천하실까요? 제가 찾은 것은 “ts-arch”였고, 폴더/슬라이스 의존성, 사이클 검사를 지원하는 것으로 보입니다. 적용을 하다가 실패를 했는데, 다른 방법이 있다면 조언 부탁드립니다. 😭 😭 😭

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
  • nestjs
문동민 댓글 3 좋아요 0 조회수 94

Part 2 강의는 언제쯤 나오는지 궁금해요

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요, 강의 정말 잘보았습니다!! Part1을 전부 보고 나니까 part2가 언제쯤 나올지 궁금해서 질문남깁니다!

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
모짜르트 댓글 1 좋아요 0 조회수 74

spring 개념적인 질문

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

스프링을 사용하는 이유 중 하나가 스프링 컨테이너를 통한 의존성 주입(DI)이라고 알고 있습니다. 그러면 스프링 컨테이너가 Bean을 관리하기 때문에, 자동으로 싱글톤 패턴이 적용된다고 이해해도 될까요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
리꼬 댓글 2 좋아요 0 조회수 109

여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요

미해결

실전! Querydsl

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @Getter @AllArgsConstructor public class MemberOrderStatDto { private Long memberId; private String memberName; private long orderCount; // 주문 수 (distinct) private BigDecimal totalAmount; // 총 매출 private Double avgItemPrice; // 아이템 평균 가격 private Long last7dOrderCount; // 최근 7일 주문 수 (서브쿼리) } 위와 같은 통계치를 여러 테이블을 조인하여 추출해내야 하는데, 이 경우에는 querysql로 쿼리를 작성하는 것보다 mybatis xml에 직접 쿼리를 작성하는게 더 효율적일까요?

  • java
  • jpa
  • querydsl
  • sql
sssom 댓글 1 좋아요 1 조회수 114

CSR , SSR 의 수요 궁금증 질문

미해결

코드로 배우는 React 19 with 스프링부트 API서버

안녕하세요, 개인적으로 궁금한 게 있어서 질문드립니다. 요즘 React Router를 보면 SSR 프로젝트를 위한 프레임워크가 나오는 등, 서버 사이드 렌더링 환경을 지원하는 방향으로 발전하고 있는 것 같더라고요. 그래서 문득 궁금해졌는데, 요즘 시장에서는 CSR 방식의 수요가 많이 줄어드는 추세인가요? 아니면 여전히 CSR 중심의 프로젝트도 많은 편인가요? 현재는 CSR 기반으로 개발하고 있는데, 앞으로의 흐름을 생각하면 SSR 관련 기술도 공부해야 할지 고민 중입니다. 현업에서 체감하시는 부분이나 조언을 듣고 싶습니다

  • react
  • typescript
  • spring-boot
  • jpa
  • jwt
규행 댓글 2 좋아요 0 조회수 111

코틀린에서 value class 적용 시 문제

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요 코틀린으로 현재 강의를 수강하고 있는 수강생입니다. 현재 자바로 작성된 코드를 보고 설명과 함께 어떤 이유로 이런 코드를 작성한 것인지 생각하며, 코틀린으로 이 개념을 적용하면 어떻게 작성할 수 있을지 DDD와 클린 아키텍처를 코틀린 문법 활용하여 구상하는 연습 중입니다. 현재 Member 도메인 코드 개선 강의에서 value class 적용하여 필드의 값이 바뀌는 문제(email자리에 nickname이 오더라도 같은 String이라 컴파일 에러가 안 남)를 해결하려 시도했습니다 package org.example.splearn.domain @JvmInline value class Email( val value: String, ) @JvmInline value class Nickname( val value: String, ) @JvmInline value class PasswordHash( val value: String, ) class Member private constructor( val email: Email, var nickname: Nickname, var passwordHash: PasswordHash, var status: MemberStatus, ) { fun activate() { check(status == MemberStatus.PENDING) { "회원이 PENDING 상태가 아닙니다" } this.status = MemberStatus.ACTIVATE } fun deactivate() { check(status == MemberStatus.ACTIVATE) { "회원이 ACTIVE 상태가 아닙니다" } this.status = MemberStatus.DEACTIVATED } fun verifyPassword( password: String, passwordEncoder: PasswordEncoder, ): Boolean = passwordEncoder.matches(password, this.passwordHash.value) fun changeNickname(nickname: String) { this.nickname = Nickname(nickname) } fun changePassword( password: String, passwordEncoder: PasswordEncoder, ) { this.passwordHash = PasswordHash(passwordEncoder.encode(password)) } fun isActive(): Boolean = this.status == MemberStatus.ACTIVATE companion object { fun create( memberCreateRequest: MemberCreateRequest, passwordEncoder: PasswordEncoder, ): Member = Member( email = memberCreateRequest.email, nickname = memberCreateRequest.nickname, passwordHash = PasswordHash( passwordEncoder.encode(memberCreateRequest.password.value), ), status = MemberStatus.PENDING, ) } } 강의대에서는 static 메소드인 of에서 MemberCreateRequest를 파라미터로 사옹하고 있습니다. 코틀린이라 companion object를 사용했구요 그러던 중 "헥사고날 아키텍처의 특성을 고려하면 의존성 외부 로직인 dto가 내부로 향해야 하고 따라서 도메인이 dto에 의존하는 것이 괜찮을까" 하는 의문이 들었습니다. companion object { fun create( email: Email, nickname: Nickname, password: String, passwordEncoder: PasswordEncoder, ): Member = Member( email = email, nickname = nickname, passwordHash = PasswordHash( passwordEncoder.encode(password), ), status = MemberStatus.PENDING, ) } 그래서 코드를 수정해 보면 이런 식으로 수정해 볼 수 있을 것 같습니다. 이에 대해서 토비님 의견이 어떠신지 여쭙고 싶습니다

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
  • kotlin
정라잇 댓글 2 좋아요 0 조회수 93

ERD 가장자리에 있는 도메인 테스트 질문

미해결

Practical Testing: 실용적인 테스트 가이드

ERD 가장자리에 있는 도메인들은 선행적으로 존재해야하는 도메인들이 있다보니 테스트 코드 작성 시 given 부분이 너무 길어져요. 어떻게 짜는게 좋은지 의견 부탁드립니다!!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
김혁준 댓글 2 좋아요 0 조회수 126

안녕하세요 코틀린으로 강의 수강 시 도메인 코드 질문드립니다

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

좋은 추석 보내고 계신가요? 현재 코틀린으로 강의를 따라해 보고 있습니다. class Member private constructor( val email: String, var nickname: String, var passwordHash: String, var status: MemberStatus, ) { fun activate() { check(status == MemberStatus.PENDING) { "회원이 PENDING 상태가 아닙니다" } this.status = MemberStatus.ACTIVATE } fun deactivate() { check(status == MemberStatus.ACTIVATE) { "회원이 ACTIVE 상태가 아닙니다" } this.status = MemberStatus.DEACTIVATED } fun verifyPassword( password: String, passwordEncoder: PasswordEncoder, ): Boolean = passwordEncoder.matches(password, this.passwordHash) fun changeNickname(nickname: String) { this.nickname = nickname } fun changePassword(password: String) { this.passwordHash = password } companion object { fun create( email: String, nickname: String, password: String, passwordEncoder: PasswordEncoder, ): Member = Member( email, nickname, passwordEncoder.encode(password), MemberStatus.PENDING, ) } } 이러한 식으로 작성하였는데 자바에서는 const로 선언한 객체나 변수가 아닌 이상 기본적으로 가변입니다. 그런데 코틀린에서는 val, var 키워드에 따라서 var로 선언해야 가변 타입이 됩니다. Member 도메인 모델 확장 챕터 수강하고 있는데 이 경우는 도메인에서 가변 속성을 미리 정의하고 해당 속성들을 var로 선언하는 것이 맞을지, 혹은 val을 통해 불변성을 확보하고 새 객체를 생성하여 변경을 처리하는 것이 적합할지 궁금합니다. 코틀린에서 도메인 코드를 작성할 때 자바와 다른 문법&개념과 도메인 중심 설계가 종종 난해할 때가 있네요.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
  • kotlin
정라잇 댓글 2 좋아요 0 조회수 108

Read Committed 격리 수준 사용 관련 질문

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

Non-repeatable read가 발생 가능한 Read Committed 격리 수준에서 어떻게 비즈니스 로직의 정합성을 유지할 수 있는지 바로 이해하지 못했다가, 검색 및 추론을 통하여 아래 [1]과 같이 이해했습니다. 질문 제가 잘 이해했는지 확인하기 위해서 질문드렸습니다! 혹시 근본적으로 오해한 부분이 있을까 두렵습니다ㅠㅠ 제가 잘 이해한 것이 맞다면, Read Committed 격리 수준을 사용할 때 데이터 정합성을 유지하기 위한 디테일들을 신경쓰면서 데이터 접근 계층의 로직을 작성하는지 궁금합니다. [1] 제가 이해한 Read Committed 격리 수준에서 데이터 정합성을 유지하기 위한 가정 및 필요조건 JPA를 사용한다. RDBMS가 Read Committed 격리 수준을 구현할 때 MVCC를 사용한다. 이유: JPA를 활용하여 비즈니스 로직을 작성할 때 데이터베이스 전역적으로 잘 정의된 일관적인 스냅샷이 존재한다고 가정하기 때문 JPA로 작성한 코드가 항상 JPA의 1차 캐시를 cache hit하는 경우 Repeatable Read 격리 수준처럼 사용해도 무방하다. JPA에서 Lazy Loading을 사용한다면, 다른 MVCC 스냅샷의 데이터가 조회될 때에도 비즈니스 로직의 정합성이 깨지지 않는 맥락에서만 사용한다.

  • spring
  • jpa
풀잎 댓글 1 좋아요 0 조회수 85

마지막 헥사고날아키텍쳐 테스트

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

마지막 강의에서 진행한 헥사고날 아키텍처 테스트에서 저는 아래와 같이 에러가 발생하고 있는데 어떻게 수정을 해야 할까요? 소스 코드는 동일한 것 같은데... 무엇이 차이인지 모르겠어요 13:09:39.840 [Test worker] INFO com.tngtech.archunit.core.PluginLoader -- Detected Java version 17.0.12 Architecture Violation [Priority: MEDIUM] - Rule 'Layered architecture considering all dependencies, consisting of layer 'domain' ('com.inflearn.splearn.domain..') layer 'application' ('com.inflearn.splearn.application..') layer 'adapter' ('com.inflearn.splearn.adapter..') where layer 'domain' may only be accessed by layers ['application', 'adapter'] where layer 'application' may only be accessed by layers ['adapter'] where layer 'adapter' may not be accessed by any layer' was violated (1 times): Method <com.inflearn.splearn.SplearnTestConfiguration.passwordEncoder()> calls method <com.inflearn.splearn.domain.member.MemberFixture.createPasswordEncoder()> in (SplearnTestConfiguration.java:19) java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] - Rule 'Layered architecture considering all dependencies, consisting of layer 'domain' ('com.inflearn.splearn.domain..') layer 'application' ('com.inflearn.splearn.application..') layer 'adapter' ('com.inflearn.splearn.adapter..') where layer 'domain' may only be accessed by layers ['application', 'adapter'] where layer 'application' may only be accessed by layers ['adapter'] where layer 'adapter' may not be accessed by any layer' was violated (1 times): Method <com.inflearn.splearn.SplearnTestConfiguration.passwordEncoder()> calls method <com.inflearn.splearn.domain.member.MemberFixture.createPasswordEncoder()> in (SplearnTestConfiguration.java:19) at com.tngtech.archunit.lang.ArchRule$Assertions.assertNoViolation(ArchRule.java:94) at com.tngtech.archunit.lang.ArchRule$Assertions.check(ArchRule.java:86) at com.tngtech.archunit.library.Architectures$LayeredArchitecture.check(Architectures.java:347) at com.inflearn.splearn.HexagonalArchitectureTest.hexagonalArchitecture(HexagonalArchitectureTest.java:22) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at com.tngtech.archunit.junit.internal.ReflectionUtils.invoke(ReflectionUtils.java:111) at com.tngtech.archunit.junit.internal.ReflectionUtils.invokeMethod(ReflectionUtils.java:103) at com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor$ArchUnitMethodDescriptor.execute(ArchUnitTestDescriptor.java:203) at com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor$ArchUnitMethodDescriptor.execute(ArchUnitTestDescriptor.java:173) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
inf025 댓글 2 좋아요 0 조회수 107

email과 패스워드 VO 질문이 있습니다.

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요 !! 도메인 모델의 값 객체 도입편에서 궁금한게 있습니다. 패스워드는 passwordEncoder를 의존하여 암호화와 매치 여부를 확인합니다. 이메일 vo는 검증 패턴이 member만 사용하는 것이 아니라 다른 곳에서도 사용할 수 있고 중복된 코드를 줄이기 위해서 변경하셨습니다. password도 이메일 vo처럼 매번 passwordEncoder를 주입받는 게 아니라 password VO를 만들어서 관리할 수 있을거같은데 패스워드는 의존성 주입으로 해결하게 되신 이유가 궁금합니다

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
티벳로보 댓글 2 좋아요 0 조회수 112

섹션5부터...

미해결

코드로 배우는 React 19 with 스프링부트 API서버

섹션5부터 자바 프로젝트가 완전 바뀌어 있는데 만들어야될 db정보도 없고... 어찌해야 할지 모르겠네요...

  • react
  • typescript
  • spring-boot
  • jpa
  • jwt
feelsagood 댓글 1 좋아요 0 조회수 100

[소셜 로그인 16강] 로그인 실패 시 리다이렉트 관련 질문

미해결

스프링 부트와 리액트로 구현하는 소셜 로그인

16강을 수강하고 있습니다. CustomLoginFailureHandler 사용자가 로그인에 실패했을 때 호출되는 메서드에 대한 질문입니다. if(savedRequest != null) { String targetUrl = savedRequest.getRedirectUrl(); //사용자가 접근하려던 URL // 즉, 로그인에 실패했지만 사용자를 원래 있던 페이지로 보내줌 // 실패 시 사용자가 접근하려던 URL 로그 출력 log.info("[핸들러 - 사용자가 접근 시도한 URL]\n-> " + targetUrl); // 사용자가 접근하려던 URL로 리다이렉트 (로그인 실패 후에도 이동) response.sendRedirect(targetUrl); } 그런데 if문의 마지막 줄을 보면 로그인 실패 후에도 targetUrl 즉, 사용자가 접근하려했던 페이지로 이동시킨다고 작성 되어 있는데 ... 로그인 실패 시에도 targetUrl로 리다이렉트시키는 이유가 뭔가요?? 로그인에 실패하면 로그인 페이지에 남아있어야 하는 것 아닌가요 ...?

  • react
  • java
  • spring-boot
  • jpa
  • spring-security
정수현 댓글 2 좋아요 0 조회수 105

초반에 h2 다운로드 과정 꼭 필요한가요?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 내용] 초반에 h2 다운로드 과정 꼭 필요한가요? h2다운로드 과정 없이 h2의존성 주입 후 바로 application.yml or properties에 코드 입력하면 안되는지 궁금합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
갈대 댓글 2 좋아요 0 조회수 169

하이버네이트6에서의 최적화에 이은 질문

미해결

실전! 스프링 데이터 JPA

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] left join이 쿼리에 실어지지 않아 의문을 갖던 중 https://inf.run/8ctRk 이 질문에 답변해주신걸 보고 이해했습니다. @Query(value = "select m from Member m left join m.team") Page<Member> findByAge(int age, Pageable pageable); 결론적으로 위와 같이 하면 쿼리에 join문이 붙어 잘 나갑니다. 다만 count 쿼리는 여전히 아래와 같은데 이 부분도 역시 마찬가지로 하이버네이트6에서 count 쿼리에서 join 문을 알아서 빼서 최적화해준건가요? 페이징 쿼리 select m1_0.member_id, m1_0.age, t1_0.team_id, t1_0.name, m1_0.username from member m1_0 left join team t1_0 on t1_0.team_id=m1_0.team_id order by m1_0.username desc fetch first ? rows only 카운트 쿼리 select count(m1_0.member_id) from member m1_0

  • java
  • spring
  • spring-boot
  • jpa
AAA 댓글 1 좋아요 0 조회수 110

https 설정 질문

해결됨

Spring Boot, AWS로 백엔드 서비스 한 사이클 완성하기

안녕하세요 강의 도커랑 cicd부분 보고 저희 동아리 프로젝트 초기설정을 했습니다! 동료가 소셜 로그인 구현한다고 해서 https 설정을 해달라고 하는데 제가 예전에 배운 내용은 nginx에 vi로 어떤 설정을 하고 ec2 내에 certbot을 설치하는 것으로 기억합니다 만약 이 강사님 이 알려주신 설정으로 이걸 하려면 도커 컨테이너 들어가서 nginx에 vi로 문서를 작성하는게 맞을까요? 걱정되는게 그러면 컨테이너를 삭제후 재실행하면 문서를 또 작성해야 하는게 걱정됩니다 제가 말한 방법이 맞는건지 아니면 다른 방법이 있는건지 궁금합니다 ai한테도 도움을 요청했는데 docker-compse.yml 에 쓰는 방식을 추천하는 것 같습니다 강사님께서 알려주신 docker-compse에 저 코드들을 붙여넣어도 괜찮을까요?

  • aws
  • mysql
  • docker
  • spring-boot
  • jpa
김태우 댓글 2 좋아요 1 조회수 130

강의 자료에 대해서 궁금해요

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

강의에서 나오는 자막들 따로 받거나 할 수는 없나요??

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
박력 댓글 2 좋아요 0 조회수 150

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

저는 application.yml 파일에서 mysql username 과 password 를 전부 .env 파일에 넣고 $ {} 를 써서 나타냈습니다. 그래서 .env 파일은 깃허브에 올리면 안돼서 배포해도 제대로 안돌아갈것 같아서 그런데. 혹시 강사님께서는 aws 배포하실때 db username, password 와 같은 민감한 정보들은 어떻게 처리하여 배포하시는걸 추천드리나요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
커디널스 댓글 1 좋아요 0 조회수 118

GlobalFilter, LoggingFilter가 동작하지 않습니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

server: port: 8000 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apiGateway-service cloud: gateway: server: webflux: default-filters: - name: GlobalFilter args: baseMessage: Spring Cloud Gateway WebFlux Global Filter preLogger: true postLogger: true routes: - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/** - id: first-service uri: lb://MY-FIRST-SERVICE predicates: - Path=/first-service/** filters: - AddRequestHeader=f-request, 1st-request-header-by-yaml - AddResponseHeader=f-response, 1st-response-header-from-yaml - name: LoggingFilter args: baseMessage: Spring Cloud Gateway WebFlux Logging Filter preLogger: true postLogger: true 다음처럼 apigateway의 설정파일을 작성하였습니다. 하지만 두 필터가 모두 동작하지 않습니다. 필터 클래스 모두 강의와 동일하게 작성하였고, first-service와 apigateway-service 모두 유레카 서버에 잘 등록되며, api 게이트웨이 또한 동작을 정상적으로 합니다. 혹시 어느 부분에서 잘못되었는 지 알 수 있을까요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
백재원 댓글 2 좋아요 0 조회수 112

fetchResults()는 더이상 권장되지 않는다는데 맞나요?

미해결

실전! Querydsl

찾아보니 아래처럼 나옵니다. ``` fetchResults() 는 Querydsl 5.x부터 deprecated(더 이상 권장되지 않음) 처리되었습니다. fetchResults() 는 count 쿼리 와 content 쿼리 를 내부적으로 두 번 실행 해서 결과를 가져옵니다. 즉, 전체 개수( total count )와 페이징된 결과( results )를 한 번에 반환하려고 했는데, JPA 환경에서는 count 쿼리 최적화 문제 SQL이 복잡해질 경우 성능 저하 문제 Querydsl 5.x 이후로는 직접 count 쿼리와 content 쿼리를 분리 해서 호출하는 방식을 권장합니다. ```

  • java
  • jpa
주영222 댓글 1 좋아요 0 조회수 208

인기 태그

인프런 TOP Writers

주간 인기글