inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

createOrder() 생성 메서드

미해결

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

@OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "delivery_id") private Delivery delivery; 보시는 바와 같이 Order의 생성 메서드에 필요한 파라미터에 들어가는 두 데이터입니다. 주문이 만들어지기 위해서는 OrderItem이 먼저 필요하기 때문에 인자로 주입하고 또 영속성 전이를 주는 것이 논리적이라 생각해 동의할 수 있었습니다. 그러나 Delivery 타입을 메서드로 주입받는 것은 배송이 있고 그 다음 주문이 존재한다는 흐름으로 받아들여집니다. 이 부분에 대한 조언을 얻을 수 있을까요? 감사합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
티티티 댓글 1 좋아요 0 조회수 105

교안 오타인가요?!

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강사님 강의 잘 듣고 있습니다!! 혹시 7. 고급동기화 교안 부분 parkNanos()에서 millis가아니라 ns아닌가요?! ! 그리고 작은 오타하나도 말씀드립니당:)

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
seulgi980 댓글 2 좋아요 0 조회수 116

java:상속을 정리하는 문제 10개(유형5)

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

14:46구간입니다. 설명해주신것 전부 이해가 되는데요 만약 부모의 형태가 아니고 자식의 형태로 자식을 낳으면 각각 결과가 어떻게 되나요? child obj = new child() 꼭 답변 부탁드립니다

  • python
  • java
  • c
  • 정보처리기사
고은채 댓글 2 좋아요 0 조회수 221

이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

for (int i=0; i<3; i++) { for (int j=i; j<2; j++) { System.out.print(" "); } for(int k=0; k<i; k++) { System.out.print("*"); } System.out.println("*"); } 이런식으로 코드를 작성하면 비효율적일까요?

  • java
  • 객체지향
geforce3080ti 댓글 2 좋아요 0 조회수 150

35분경 빈칸채우기 문제 (선택정렬)

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요, PDF 자료상의 문제와 코드랑은 다르게, 아래와 같이 영상해설에서는 배열의 값이 주어져 있더라고요. 제가 알고리즘에 대한 이해도와 능력이 많이 부족합니다만, 주어진 문제와 코드문만으로 풀이를 한다면, 어떻게 접근을 해야할까요? 감사합니다.

  • python
  • java
  • c
  • 정보처리기사
Hu Young Lee 댓글 2 좋아요 0 조회수 111

김영한님 알고리즘 강의는 없는건가요??

해결됨

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니요 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 김영한님 알고리즘 강의는 없는건가요??

  • java
  • 객체지향
박준혁 댓글 1 좋아요 0 조회수 203

inteliJ 대신 VScode 설치해도 될까요?

미해결

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

inteliJ 대신 VScode 설치해도 될까요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
김혜빈 댓글 2 좋아요 0 조회수 532

엔진 코드에 작성된 주석

미해결

[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)

안녕하세요. 엔진 코드에 한글로 작성된 주석들 부록에 있는 엔진이 포함된 소스코드를 받으면 볼 수 있을까요??

  • c++
  • unreal-engine
댓글 2 좋아요 0 조회수 109

교안 오타 일까요?

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

map1의 결과가 뭔가 벨류값이 2, 3이 바뀐거같네요.

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
트릴 댓글 1 좋아요 0 조회수 84

비동기 로딩 질문 드립니다.

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

안녕하세요. 유익한 강의 감사합니다. TSoftObjectPtr 통한 약참조된 객체의 경우 비동기 로딩 코드 문의 드립니다. UABWeaponItemData* WeaponItemData = Cast<UABWeaponItemData>(InItemData); if (WeaponItemData) { if (WeaponItemData->WeaponMesh.IsPending()) { WeaponItemData->WeaponMesh.LoadSynchronous(); } Weapon->SetSkeletalMesh(WeaponItemData->WeaponMesh.Get()); } 위에 것이 원래 코드인데, 소프트 참조를 적극 활용할 경우, 런타임에 지연된 로딩을 많이 사용하게 되면 hitch 가 많이 발생할까 싶어 비동기로딩 방법을 찾아보았습니다 ( 제가 짠 건 아니고, 코파일럿 도움 ) if (WeaponItemData->WeaponMesh.IsPending()) { // 비동기 로드 시작 WeaponItemData->WeaponMesh.LoadAsync([this](UObject* LoadedObject) { // 로드 완료 후 처리 USkeletalMesh* LoadedMesh = Cast<USkeletalMesh>(LoadedObject); if (LoadedMesh) { Weapon->SetSkeletalMesh(LoadedMesh); } }); } else { // 이미 로드된 경우 바로 설정 Weapon->SetSkeletalMesh(WeaponItemData->WeaponMesh.Get()); } 언리얼이 내부적으로 LoadAsync 를 처리하는 방법까지 분석해보진 못했습니다만, 여러 틱에 나눠 시분할로 나눠서 로딩하는 방법인가? 짐작만 하고 있습니다. 이런 경우 비동기 로딩을 하는 게 일반적으로 더 나은 방법일 지 문의 드립니다.

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
제정민 댓글 2 좋아요 0 조회수 242

장비 아이템과 인터랙션 강의 수강 중 빌드가 안돼요

해결됨

실전! 언리얼 소울라이크 개발: A to Z

강의 학습 도중, CombatComponent를 UDS1CombatComponent로 변경하는 작업을 한 이후로 빌드가 안돼요... 헤더 , cpp파일의 이름 및 include한 목록들 전부 수정해도 안되는데 이유가 뭘까요? 오류는 다음과 같습니다 정의되지 않은 형식 'UDS1CombatComponent'을(를) 사용했습니다. 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 세부 정보 오류 C2440 'static_cast': 'UObject '에서 'UDS1CombatComponent '(으)로 변환할 수 없습니다. DS1 C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\CoreUObject\Public\UObject\Object.h 151 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 세부 정보 오류 MSB3073 ""C:\Program Files\Epic Games\UE_5.5\Engine\Build\BatchFiles\Build.bat" DS1Editor Win64 DebugGame -Project="C:\Unreal Projects\DS1\DS1.uproject" -WaitMutex -FromMsBuild -architecture=x64" 명령이 종료되었습니다(코드: 6). DS1 C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets 44 강사님께서 IDE를 다른걸 쓰시는건지 설정이 다른건지는 모르겠습니다만 따라가기 힘들고, 강의 영상처럼 변경사항이 잘 반영되지 않아서 자꾸 이런 오류 뜰때마다 너무 속상합니다..

  • c++
  • unreal-engine
  • 언리얼-c++
언리얼뉴비 댓글 3 좋아요 0 조회수 166

버그

미해결

고성능 JPA & Hibernate (High-Performance Java Persistence)

4강 초반 자막싱크가 맞지 않습니다. 음성더빙도 속도가 안맞아요.

  • java
  • jpa
  • hibernate
이재일 댓글 1 좋아요 0 조회수 102

고민이있습니다. 루키스에 수많은 강의가 있는데 어떤 강의를 봐야할지 헷갈립니다.

미해결

[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)

[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크) [Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #2 (네트워크) [Rookiss University] UE5 Lyra 클론 코딩 (Haker) [켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1) 저는 언리얼엔진게임개발자가 꿈인데 이렇게 네 가지 강의를 듣고서 공부하고 싶습니다. 근데 문득 고민이 드는게 이 네 가지 강의를 한번에 다 들어야 할 필요가 있을까요? 만약 다 들어야 한다면 이유는 무엇인지가 궁금합니다. 만약 이 많은 강의들을 들어야 한다면 어떤식으로 어떤순서로 체계적으로 공부할지 고민이 됩니다.

  • c++
  • unreal-engine
정영기 댓글 2 좋아요 0 조회수 175

9:06초에서 이해가 안가는 부분 (unlock)

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

비공정 모드에서는 스레드 경쟁 상태가 되어 어떤 스레드가 락을 획득 할 지 보장이 안되는건 이해가 됐습니다. 다만 교안에는 이미지 처럼 하나 깨운다 라고 되어있는데, 그러면 경쟁 상태가 의미가 있는지요? 한번에 여러 스레드가 unpark되는게 아니라면 왜 레이스 컨디션 문제가 발생하는지 궁금합니다.

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
트릴 댓글 2 좋아요 1 조회수 121

스태미나 UI 만들기 강의 초반부 따라하다가 캐릭터가 사라졌어요

해결됨

실전! 언리얼 소울라이크 개발: A to Z

초반에 _Game 파일을 만들고 폴더들을 옮기셨는데 리다이렉션인가 알려주시는 부분 모르고 그냥 다 옮기다가 뭔가 오류가 나서 맵도 도중에 이동이 안되고 블루프린트랑 인풋 폴더를 옮겨도 그대로 남아있고, 삭제해도 삭제가 안됐었어요 그러다가 몇번 시도했는데, 이젠 아예 캐릭터가 안보여요 맵에서 아직 초반부라 그런진 모르겠는데, 강의 도중 너무 휙휙 넘어가시는 부분들이랑 선행되어야 하는 작업들을 안알려주셔서 헷갈리는 부분이 너무 많아요..

  • c++
  • unreal-engine
  • 언리얼-c++
언리얼뉴비 댓글 2 좋아요 0 조회수 129

CRUD test시, localhost:9000 에러가 뜹니다

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

package kdy.board.article.api; import MSA.board.article.service.response.ArticleResponse; import lombok.AllArgsConstructor; import lombok.Getter; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestClient; public class ArticleApiTest { RestClient restClient = RestClient.create("http://localhost:9000"); @Test void createTest() { ArticleResponse response = create(new ArticleCreateRequest( "hi", "my content", 1L, 1L )); System.out.println("response = " + response); } ArticleResponse create(ArticleCreateRequest request) { return restClient.post() .uri("/v1/articles") .body(request) .retrieve() .body(ArticleResponse.class); } @Getter @AllArgsConstructor static class ArticleCreateRequest { private String title; private String content; private Long writerId; private Long boardId; } @Getter @AllArgsConstructor static class ArticleUpdateRequest { private String title; private String content; } } 위와 같이 코드 쓰고 Test를 진행하면 아래와 같은 에러가 뜹니다. cmd창에서 검색해봐도 현재 9000을 쓰고 있는 서버는 없다고 뜨는데 어느 부분이 문제인 건가요? > Task :common:snowflake:compileJava UP-TO-DATE > Task :common:snowflake:processResources NO-SOURCE > Task :common:snowflake:classes UP-TO-DATE > Task :common:snowflake:jar UP-TO-DATE > Task :service:article:compileJava UP-TO-DATE > Task :service:article:processResources UP-TO-DATE > Task :service:article:classes UP-TO-DATE > Task :service:article:compileTestJava > Task :service:article:processTestResources NO-SOURCE > Task :service:article:testClasses org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:9000/v1/articles": null at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.createResourceAccessException(DefaultRestClient.java:575) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:498) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.retrieve(DefaultRestClient.java:460) at kdy.board.article.api.ArticleApiTest.create(ArticleApiTest.java:24) at kdy.board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:14) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.net.ConnectException at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:951) at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:133) at org.springframework.http.client.JdkClientHttpRequest.executeInternal(JdkClientHttpRequest.java:102) at org.springframework.http.client.AbstractStreamingClientHttpRequest.executeInternal(AbstractStreamingClientHttpRequest.java:70) at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:66) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:492) ... 6 more Caused by: java.net.ConnectException at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1041) at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:227) at java.net.http/jdk.internal.net.http.PlainHttpConnection.checkRetryConnect(PlainHttpConnection.java:280) at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$2(PlainHttpConnection.java:238) at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.nio.channels.ClosedChannelException at java.base/sun.nio.ch.SocketChannelImpl.ensureOpen(SocketChannelImpl.java:202) at java.base/sun.nio.ch.SocketChannelImpl.beginConnect(SocketChannelImpl.java:786) at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:874) at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$1(PlainHttpConnection.java:210) at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:212) ... 9 more java.net.ConnectException at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:951) at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:133) at org.springframework.http.client.JdkClientHttpRequest.executeInternal(JdkClientHttpRequest.java:102) at org.springframework.http.client.AbstractStreamingClientHttpRequest.executeInternal(AbstractStreamingClientHttpRequest.java:70) at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:66) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:492) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.retrieve(DefaultRestClient.java:460) at kdy.board.article.api.ArticleApiTest.create(ArticleApiTest.java:24) at kdy.board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:14) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.net.ConnectException at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1041) at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:227) at java.net.http/jdk.internal.net.http.PlainHttpConnection.checkRetryConnect(PlainHttpConnection.java:280) at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$2(PlainHttpConnection.java:238) at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.nio.channels.ClosedChannelException at java.base/sun.nio.ch.SocketChannelImpl.ensureOpen(SocketChannelImpl.java:202) at java.base/sun.nio.ch.SocketChannelImpl.beginConnect(SocketChannelImpl.java:786) at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:874) at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$1(PlainHttpConnection.java:210) at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:212) ... 9 more > Task :service:article:test ArticleApiTest > createTest() FAILED org.springframework.web.client.ResourceAccessException at ArticleApiTest.java:24 Caused by: java.net.ConnectException at ArticleApiTest.java:24 Caused by: java.net.ConnectException at Utils.java:1041 Caused by: java.nio.channels.ClosedChannelException at SocketChannelImpl.java:202 1 test completed, 1 failed > Task :service:article:test FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':service:article:test'. > There were failing tests. See the report at: file:///D:/projects/MSA-board/service/article/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. BUILD FAILED in 9s 6 actionable tasks: 2 executed, 4 up-to-date

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
learningkimkim 댓글 3 좋아요 1 조회수 180

안녕하세요.

미해결

토비의 스프링 6 - 이해와 원리

아래 코드에서 계속해서 테스트 오류가 뜹니다.. 이유가 무엇일까요? 오히려 isequalto 를 사용했을때 테스트가 성공해버려요 @Test void Clock() { Clock clock = Clock.systemDefaultZone(); LocalDateTime dt1 = LocalDateTime.now(clock); LocalDateTime dt2 = LocalDateTime.now(clock); Assertions.assertThat(dt2).isAfter(dt1); } // 오류 메세지 java.lang.AssertionError: Expecting actual: 2025-05-09T16:54:49.066025800 (java.time.LocalDateTime) to be strictly after: 2025-05-09T16:54:49.066025800 (java.time.LocalDateTime) when comparing values using 'ChronoLocalDateTime.timeLineOrder()'

  • java
  • spring
밍구 댓글 2 좋아요 0 조회수 166

DLQ 관련 질문

해결됨

RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기

위와 같이 로그가 찍혔으면, DLQ에서 ack 상태가 되어야하는것 아닐까요? @RabbitListener(queues = RabbitMQConfig.DLQ) public void process(String message) { System.out.println("DLQ Message Received: " + message); try { String fixMessage = "success"; rabbitTemplate.convertAndSend( RabbitMQConfig.ORDER_EXCHANGE, "order.completed.shipping", fixMessage ); System.out.println("DLQ Message Sent: " + fixMessage); } catch (Exception e) { System.err.println("### [DLQ Consumer Error] " + e.getMessage()); } } 위의 코드인 경우 AUTO 모드로 동작해서 자동으로 DLQ에서 처리가 되면 ACK 을 받을 것이라 생각했는데, DLQ에서 unack 상태로 남아있어서 여쭤봅니다! 이후에 애플리케이션을 종료하면 DLQ에서는 다시 ready 상태가 되고, 애플리케이션을 실행하면 이를 실행하고 와 같이 로그가 찍힌 다음에 다시 unack 상태가 됩니다. 좋은 강의 감사드립니다 :)

  • java
  • spring-boot
  • jpa
  • msa
  • websocket
  • rabbitmq
Jerry 댓글 2 좋아요 0 조회수 162

댓글 최대 2 depth - 목록 API 구현 조회 테스트 부분

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

아래코드 첨부 하였구요, readAllInfiniteScroll 부분 secondPage 출력 부분에 getParentCommentId 조건 체크 부분에 진입이 되서 그런지, 부모, 하위 댓글 위치가 다르게 출력 됩니다. 강의자료에 있는걸로 이식 해봐도 동일한 증상 나옵니다. 출력 부분은 각 함수마다 하단에 기입 해놨습니다 음 그니까, readAll() 부분은 부모, 자식 구분되서 잘나오는데 무한스크롤 부분에서는 기대값은 아래처럼 첫번째 첨부한 기대값과 같아야 하는데 실제 로직에서 출력되는 부분은 다르게 출력 되는거같습니다. 어떤 부분을 확인 해봐야 할가요?? firstPage comment.getCommentId() = 179060865682051072 comment.getCommentId() = 179060867179417600 comment.getCommentId() = 179060867334606848 comment.getCommentId() = 179061928581599232 comment.getCommentId() = 179061929433042944 comment.getCommentId() = 179061929709867008 secondPage comment.getCommentId() = 179065967874379776 comment.getCommentId() = 179065968025374733 comment.getCommentId() = 179065967874379777 comment.getCommentId() = 179065968008597505 @Test void readAll() { CommentPageResponse response = restClient.get() .uri("/v1/comments?articleId=1&page=1&pageSize=10") .retrieve() .body(CommentPageResponse.class); System.out.println("response.getCommentCount() = " + response.getCommentCount()); for (CommentResponse comment : response.getComments()) { if (!comment.getCommentId().equals(comment.getParentCommentId())) { System.out.print("\t"); } System.out.println("comment.getCommentId() = " + comment.getCommentId()); } /** * 1번 페이지 수행 결과 comment.getCommentId() = 179060865682051072 comment.getCommentId() = 179060867179417600 comment.getCommentId() = 179060867334606848 comment.getCommentId() = 179061928581599232 comment.getCommentId() = 179061929433042944 comment.getCommentId() = 179061929709867008 comment.getCommentId() = 179065967874379776 comment.getCommentId() = 179065968025374733 comment.getCommentId() = 179065967874379777 comment.getCommentId() = 179065968008597505 */ } @Test void readAllInfiniteScroll() { List<CommentResponse> responses1 = restClient.get() .uri("/v1/comments/infinite-scroll?articleId=1&pageSize=5") .retrieve() .body(new ParameterizedTypeReference<List<CommentResponse>>() { }); System.out.println("firstPage"); for (CommentResponse comment : responses1) { if (!comment.getCommentId().equals(comment.getParentCommentId())) { System.out.print("\t"); } System.out.println("comment.getCommentId() = " + comment.getCommentId()); } Long lastParentCommentId = responses1.getLast().getParentCommentId(); Long lastCommentId = responses1.getLast().getCommentId(); List<CommentResponse> responses2 = restClient.get() .uri("/v1/comments/infinite-scroll?articleId=1&pageSize=6&lastParentCommentId=%s&lastCommentId=%s" .formatted(lastParentCommentId, lastCommentId)) .retrieve() .body(new ParameterizedTypeReference<List<CommentResponse>>() { }); System.out.println("secondPage"); for (CommentResponse comment : responses2) { if (!comment.getCommentId().equals(comment.getParentCommentId())) { System.out.print("\t"); } System.out.println("comment.getCommentId() = " + comment.getCommentId()); } /** firstPage comment.getCommentId() = 179060865682051072 comment.getCommentId() = 179060867179417600 comment.getCommentId() = 179060867334606848 comment.getCommentId() = 179061928581599232 comment.getCommentId() = 179061929433042944 secondPage comment.getCommentId() = 179061929709867008 comment.getCommentId() = 179065967874379776 comment.getCommentId() = 179065968025374733 comment.getCommentId() = 179065967874379777 comment.getCommentId() = 179065968008597505 comment.getCommentId() = 179065967874379778 */ }

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
MinKyu Song 댓글 2 좋아요 0 조회수 199

인기 태그

인프런 TOP Writers

주간 인기글