묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 Gradle 빌드 도구 설정 'select configuration element in the tree to edit its settings' 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) -> 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) -> 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) -> 예[질문 내용]현재 상황File | Settings | Build, Execution, Deployment | Build Tools | Gradle 선택 시 'select configuration element in the tree to edit its settings' 만 조회되고 general settings 설정 창이 안보이는 상황단, import gradle 프로젝트 로딩은 문제가 없으며 코드 실행 역시 잘 되는 상황. 시도했던 해결 방안들인텔리제이 Invalidate and Restart 를 거침인텔리제이 전체 재설치 진행start.spring.io의 경우 해당 사진의 설정 사용 GPT에서 제공한 프로젝트 폴더 파일 역시 같은 증상(설정 조회가 되지 않는) 증상을 보임프로젝트 JDK 설정 역시 21 버전으로 설정, JAVA_HOME 환경 변수 역시 21버전으로 설정gradle 플러그인 역시 설치 및 활성화 되어 있음을 확인.idea 폴더와 .gradle 폴더 삭제 후 다시 프로젝트를 열어봄.gradle wrapper 존재 확인 Run anything에서 gradle clean 등의 실행을 거쳐봄.결론...여러 방안을 시도해보고 설정 역시 계속 재확인 후 인텔리제이 리스타트를 진행해도 해당 설정이 조회되지 않고,select configuration element in the tree to edit its settings 표시만 떠 있네요...혹시 해결 방안을 아시는 분 계실까요?오늘도 노고 많으십니다. 좋은 하루 되세요.
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
Object Header 의 Klass word (39강 36:00)
39강의 36분 경에 보여주시는 그림에 보면 Object Header 의 Klass word 가 Metaspace 영역의 Class 클래스의 메타데이터를 가르키고 있습니다. 해당 Class 클래스의 메타데이터 내용을 보면 Object Age 나 Lock Flag 등이 들어가는데 제가 공부하기로는 Object Age 나 Lock Flag 와 같은 개별 인스턴스가 가져야 하는 메타데이터는 Mark Word 에 저장되는 것으로 알고 있었는데, 아닌가요?그렇다면 이 강의에서 설명하신 바로는 Class 클래스가 클래스로더의 "준비" 단계에서 생성되고, 실제 인스턴스 객체는 나중에 생성된다고 하셨는데 "준비"단계에 생성된 Class 클래스에 인스턴스 별로 다르게 가져야 하는 정보 (age, lock flag 등) 이 어떻게 구별되서 저장되나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
ArticleDeletedEventHandler
handle()에 조회 수, 좋아요 수, 댓글 수 캐시도 삭제해주어야 하는데 누락되어야 한다고 생각이 하는데 어떻게 생각하시는지 궁금합니다! 아니면 다른 의도가 있으셨을까요?강의에서는 생성 시간 및 인기글 캐시만 삭제하고 있습니다!
-
해결됨기초 탄탄! 독하게 시작하는 Java Part 3(상) : 멀티스레드와 동기화
JVM 스레드 TLS 질문
선생님께서 말씀하시는 TLS는 프로세스의 한정적인 VMS위에서 나뉘어서 사용되는건가요?? Heap area에 비해 다른 영역은 작은걸로 아는데 TLS가 나뉘어서 사용되면 영역이 작아지지 않을까라고 생각되서 질문드립니다!!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
TransactionalEventListener 관련 문의드리고자 글 남깁니다.
안녕하세요, 강사님 늘 강의 잘 듣고 있습니다, 감사합니다 !다름이 아니고, @Transactional과 @TransactionalEventListener 설정 관련해 궁금한 사항이 있어서 문의드리게 되었습니다.강의내용은 @Transactional, @TransactionalEventListener가 전역적으로 선언되었고 outbox 관련 로직만 존재하기 때문에 괜찮지만제 업무환경에서는 @TrasnactionalEventListener가 사용되면 프로젝트의 모든 @Transactional으로 관련된 내용이 바인딩되기 때문에 이를 scope 별로 구분하는 방법이 필요해보였는데요. 따로 알아보았지만, payload(강의에서는 OutboxEvent) 를 통해 분기처리하는 방법만 보이다보니 혹시 관련하여 TrasnactionalEventListener 어노테이션 필드 혹은 커스텀 어노테이션만으로 구분할 수 있는 방법이 있을까요 ?문의드리는 가장 큰 이유는 outbox 로직이 필요없는 DB처리에도 TrasnactionalEventListener이 우선은 호출되고 payload를 통해 early return 시키려고 하다보니, 불필요한 리소스 사용을 방지하고 싶어서 문의드리게 되었습니다.
-
미해결스프링 시큐리티 OAuth2
Jdbc 관련 강의 및 깃헙 문의
안녕하세요. 아래는 강의 자료 캡처입니다.1, 2, 3, 4 번에 대한 각각의 강의가 없어서 문의 드립니다. 특히, 4번은..OAuth 2.0 강좌 전체에서Authorization server 에 직접 DB 나 Nosql 에 연동하는 강의가 없는 것 같아서꼭 보고 싶은데.. 깃헙에 브랜치마저도 없는 것 같아 문의 드립니다.. 감사합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
오타 문의
안녕하세요! 우선 강의 너무 잘 듣고 있습니다!강의 자료에서 좋아요 수 설계 부분에서11:171:1 관계이지만, 테이블 비정규화의 필요성을 살펴본 것이다.이 부분은 1:1 관계이므로 비정규화의 필요성이 있지만, 레코드 락으로 인한 자원 한계를 고려하여 '정규화'의 필요성을 살펴본 것 이 맞지 않나 싶습니다! 혹시 제가 잘못 이해한 부분이 있다면 알려주시면 감사하겠습니다!
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
JpaCursorItemReader 질문
이 기본 구현에서 호출하는 getResultList() 는 전체 데이터를 메모리에 한 번에 로딩하므로 실제 스트리밍이 아니며 따라서 타 JPA 구현체 사용 시 주의가 필요하다.라고 하셨는데 JpaCursorItemReader를 이용하면 모든 데이터를 메모리로 가져오기 때문에 OutOfMemoryError가 날 수 있나요??추가로 실무에서는 쿼리가 복잡할텐데 JPA 보단 JDBC를 사용하는 편인가요???
-
미해결얄코의 떠먹여주는 객체지향 디자인 패턴
수정 요청
토끼가 나와서 하는 질문이 하나도 안들립니다. 어수룩함을 표현한거 같은데 이상한 말투로 질문을 하는데 전혀 어울리지도 않고 강의 내용에 전혀 도움이 안됩니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA Cretieria와 QueryDSL
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의만 들었을때 JPA Cretieria와 QueryDSL 둘다 JPQL빌더 역할 하는것 같은데 자세한 차이 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입 컬렉션 PK
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Hibernate: create sequence Member_SEQ start with 1 increment by 50 Hibernate: create table ADDRESS ( MEMBER_ID bigint not null, city varchar(255), zipcode varchar(255) ) Hibernate: create table FAVORITE_FOOD ( MEMBER_ID bigint not null, FOOD_NAME varchar(255) ) Hibernate: create table Member ( MEMBER_ID bigint not null, USERNAME varchar(255), city varchar(255), zipcode varchar(255), primary key (MEMBER_ID) ) Hibernate: alter table if exists ADDRESS add constraint FKsuulxb5rmrxvb83yr43ox86wn foreign key (MEMBER_ID) references Member Hibernate: alter table if exists FAVORITE_FOOD add constraint FKjchfnr69biisfgjdpoe82rpa4 foreign key (MEMBER_ID) references Member 위 그림에서 FAVORITE_FOOD 테이블에서 FOOD_NAME, ADDRESS 테이블에서 CITY, ZIPCODE 가 왜 PK가 되는지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
공부 방향이 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]김영한님의 강의를 들으며 꾸준히 공부하는 한 직장인입니다. 현재 로드맵이 나눠져 있는데 혹시 이제까지 나온 김영한님의 모든 강의를 포함하는 로드맵을 추천해 주실 수 있을까요??
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
잘못된 csv 파일
csv 파일 중 프로세스 아이디 정보가 잘못되어있습니다.실제 SystemFailure의 processId는 Integer인데 csv 파일은 String입니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
findOrders()에 fetch join 사용하지 않은 이유는 이거인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]N+1 문제 발생시에는 fetch join 을 사용하고,컬렉션이 포함된 조회는 XtoOne 도 fetch join 을 유지했었습니다. 이번 강의의 findOrders 에는 fetch join 이 아닌 일반 join 을 사용한 이유는findOrderItems 에서 OrderItems 를 따로 조회하기 때문에 일반 join 을 사용한건가요? Order -> member 는 ManyToOneOrder -> delivery 는 OneToOne 이라서 N+1 문제는 발생하지 않는다고 이해는 하고 있습니다!컬렉션타입인 OrderItems 는 별개의 쿼리를 이용해서 들고 오기 때문에 XtoOne 연관관계 엔티티를 조회하기 위해 fetch join 을 사용하지 않았다고 이해하면 될까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
JPA 유의점과 V3.1 에 대한 질문입니다!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 안녕하세요. JPA 유의점과 V3.1 에 대한 질문입니다!지금까지 수업을 들으며 제가 요약한 내용은Repository 에서 Entity 를 조회한다.해당 조회에서 N+1이 발생한다면 -> 회원목록을 조회한다면 N+1 이 발생하지 않지만, 회원목록 + 가장 최근에 주문한 상품1개 도 함께 조회를 한다면 N+1 문제가 발생한다. > 목록데이터를 조회하는데, 목록데이터 각각의 PK를 FK로 참조하는 다른 테이블의 데이터를 함께 조회하는데 Lazy 로딩일 경우 N+1 문제가 발생한다.N+1 이 발생할 경우 fetch join 으로 변경한다.해당 fetch join 쿼리에 컬렉션(리스트 등) 타입이 존재할 경우 select 문에서 컬렉션을 조회하는 쿼리를 지우고, XtoOne 연관관계에 있는 엔티티 조회는 fetch join 을 유지한다. + hibernate.default_batch_fetch_size 설정한다. 이렇게 정리했습니다! 혹시 정정해야하는 부분이 있을까요?? V3.1 에 대한 질문은, 조회쿼리에서 OrderItem은 없지만, Controller 에서의 @Data static class OrderDto { private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; private List<OrderItemDto> orderItems; public OrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getDelivery().getAddress(); orderItems = order.getOrderItems().stream() .map(orderItem -> new OrderItemDto(orderItem)) .collect(toList()); } } @Data static class OrderItemDto { private String itemName; //상품명 private int orderPrice; //주문가격 private int count; //주문수량 public OrderItemDto(OrderItem orderItem) { itemName = orderItem.getItem().getName(); orderPrice = orderItem.getOrderPrice(); count = orderItem.getCount(); } } 여기서 List<OrderItemDto> orderItems부분으로 인하여 proxy 로 들고 왔던 것을 실제 DB조회를 하여orderItems 에 값을 채워넣는 게 맞나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트 프로젝트를 위해 자바강의와 스프링부트강의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]안녕하세요.잘 듣고 있는 수강생입니다. 지금 스프링부트로 프로젝트를 하려고하는데 자바문법기본도 아직 익숙치 않은 상황입니다. 그래서 지금 강의를 자바 기본편부터 듣고 스프링부트강의를 듣는게 나을까요? 아니면 프로젝트를 위해서 스프링부트 강의를 먼저 듣는게 나을까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
11:29 C언어 문제
gets(n)이 n을 입력받는 함수라는 거 이해했고,근데 name() 에 ()가 있어서 () 에 홍길동을 입력받는건가요? name이 똑같이 n에다가 덮어쓴다는게 뭘 보고 알 수 있는건가요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
406 Not Acceptable에러 발생
현재 테스트 코드 작성하고 있는데 다음과 같이 에러 발생합니다.코드package board.article.api; import board.article.service.request.ArticleCreateRequest; import 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; } } 에러 > 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> Task :service:article:processResources UP-TO-DATE> Task :service:article:classes> Task :service:article:compileTestJava> Task :service:article:processTestResources NO-SOURCE> Task :service:article:testClassesorg.springframework.web.client.HttpClientErrorException$NotAcceptable: 406 Not Acceptable: "{"timestamp":"2025-05-29T06:00:40.838+00:00","status":406,"error":"Not Acceptable","path":"/v1/articles"}" at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:118) at org.springframework.web.client.StatusHandler.lambda$defaultHandler$3(StatusHandler.java:86) at org.springframework.web.client.StatusHandler.handle(StatusHandler.java:146) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.applyStatusHandlers(DefaultRestClient.java:672) at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:195) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:659) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.body(DefaultRestClient.java:605) at board.article.api.ArticleApiTest.create(ArticleApiTest.java:26) at board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:15) 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)> Task :service:article:testArticleApiTest > createTest() FAILED org.springframework.web.client.HttpClientErrorException$NotAcceptable at ArticleApiTest.java:261 test completed, 1 failed> Task :service:article:test FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':service:article:test'.> There were failing tests. See the report at: file:///C:/Users/zxc86/Desktop/study/springboot/board/service/article/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.BUILD FAILED in 4s6 actionable tasks: 3 executed, 3 up-to-dategpt에서는 accept 설정이 없어서 그렇다는데 강사님 코드에는 없어서요원인이 뭘까요?
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
배치 애플리케이션 패키지 구조
현재 배치 강의를 20퍼 정도 수강 했는데, 배치 애플리케이션을 만들 때 step, job 등 여러 클래스가 있을 텐데 어떤 패키지 구조로 만드는지 궁금합니다.
-
해결됨기초 탄탄! 독하게 시작하는 Java Part 3(하) : 소켓과 파일 I/O
mac 사용자 폴더 생성 경로 변경
String tmpPath = "C:/Tmp";mac은 예제에 있는 경로가 맞지 않아 아래 에러가 발생합니다.Caused by: java.io.IOException: No such file or directory그래서 올바른 홈 경로를 변경해줘야 합니다.아래의 경로로 변경String tmpPath = System.getProperty("user.home") + "/Temp";이렇게 경로를 바꿔주시면 /Users/{username} 경로에 정상적으로 생성됩니다. 혹시 모르는 분이 계실까봐 작성해둡니다.