묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
제가 강의 내용을 제대로 이해하지 못한 것 같습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]@Query("select r from Review r join fetch r.user u join fetch r.reviewReviewTags rt join fetch rt.reviewTag where r.program.id=:programId order by r.likeCounts desc") List<Review> findTop4ByProgramOrderByLikeCountsDescWithFetch(@Param("programId") Long programId, Pageable pageable);안녕하세요!영한님의 강의에서 이해했던 내용과 결괏값이 달라서 질문 올립니다.(물론 제가 이해를 잘 못했을 것 같긴합니다!)현재 User, Review, Program 을 1대 다 다대1로 나누었고 중간테이블은 Review 입니다.또한 Review , RevieReviewTag, ReviewTag 또한 1대다 다대1. 중간테이블은 ReviewReviewTag 입니다.현재 강의 내용에서 제가 이해한 것은@OneToMany 에서 성능 최적화 할 때1)페이징 처리시 : Batch 를 활용2) 페이징 처리 안할 시: distinct+ fetch JOIN 사용입니다.위 경우에서 join fetch r.reviewReviewTags 에 주목해 주세요!이는 review 와 reviewreviewTag 즉 1대다입니다.이를 fetch Join 으로 한번 발라보았습니다. 저는 위 과정에서 일단 핵심적으로 distinct 를 안붙였기 때문에 같은 리뷰에 대한 리뷰 태그가 여러 개 생겨서 중복된 결과가 나올줄 알았습니다. 실제로 위 과정에서 나온 쿼리를 복사해서 집어 넣어보니 이렇게 추가된 같은 review에 대해서 reviewTag 개수(review에 대한 1대다,2개로 고정해서 저장하였음. 따라서 두번씩 중복) 만큼 중복해서 나왔습니다. 그래서 위 과정을 DTO로 만들어서 반환하면 2개씩 중복된 결과가 나올 것이라 예상했습니다. 근데 JSON 데이터를 확인한 결과 { "reviewId": 21, "like": 0, "contents": "너무 좋았습니다0", "userPosterPath": null, "userNickName": null, "localDateTime": "2024-02-04T03:40:18.924606", "ratings": "2.5", "reviewTagNames": [ "극장에서 또 보고 싶어요", "돈이 아까워요" ] }, { "reviewId": 22, "like": 0, "contents": "너무 좋았습니다1", "userPosterPath": null, "userNickName": null, "localDateTime": "2024-02-04T03:40:18.934169", "ratings": "1.5", "reviewTagNames": [ "극장에서 또 보고 싶어요", "돈이 아까워요" ] }, { "reviewId": 23, "like": 0, "contents": "너무 좋았습니다2", "userPosterPath": null, "userNickName": null, "localDateTime": "2024-02-04T03:40:18.939567", "ratings": "2.5", "reviewTagNames": [ "극장에서 또 보고 싶어요", "돈이 아까워요" ] }, { "reviewId": 24, "like": 0, "contents": "너무 좋았습니다3", "userPosterPath": null, "userNickName": null, "localDateTime": "2024-02-04T03:40:18.948736", "ratings": "0.5", "reviewTagNames": [ "극장에서 또 보고 싶어요", "돈이 아까워요" ] } ], 얼레레 근데 왠걸정상적으로 나오는 것입니다.저는 위에 쿼리를 DTO로 만들어서 반환한 것 밖에 없는데 (pageable 안에는 PageRequest.of(0, 4)) 제가 이해한 강의 내용 대로라면 일단 핵심적으로 distinct 를 안붙였기 때문에 1대다의 다의 개수만큼 중복된(위에서는 2개) 결과가 나와야 할 것 같았는데어디서 틀린 것일까요 ㅠ 스프링 부트 버젼은 2.7.X 이며 하이버 네이트 버젼도 6이 안되는 것을 참고해주세요 ㅜ
-
미해결Next + React Query로 SNS 서비스 만들기
MacOs, PostgreSQL16 설치, pgAdmin 4에서 connection 오류
비번 확실히 틀리지 않았는데 계속 오류 뜨길래, 완전 삭제후 다시 설치해서 비번 쉬운걸로 다시 설정하고 입력해도 계속 비번오류 뜹니다.
-
해결됨스프링 핵심 원리 - 기본편
@RequiredArgsConstructor를 포함한 생성자 2개
[질문 내용]@RequiredArgsConstructor //필수값(ex final)으로 생성자를 제공 public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; //final을 붙이면 값이 무조건 필요하다는 뜻 public OrderServiceImpl() { System.out.println("abc"); } }이런식으로 @RequiredArgsConstructor 으로 final을 매개변수로 갖는 생성자와 매개변수가 없는 생성자를 따로 만들면 이런식으로 변수가 초기화 되지 않았다고 오류가 발생하는데 @RequiredArgsConstructor은 생성자가 없을 때만 사용할 수 있는거라서 매개변수 없는 생성자를 만들었기 때문에 @RequiredArgsConstructor` 가 작동을 안 하는건가요?
-
미해결스프링 핵심 원리 - 기본편
setter 주입 테스트 코드
[질문 내용]영상에는 생성자 주입 테스트만 있어서 수정자 주입을 했을 때 테스트 하는 방법에 대해 생각해 봤습니다.@Test void test(){ ApplicationContext ac = new AnnotationConfigApplicationContext(OrderServiceImpl.class); MemoryMemberRepository memberRepository = new MemoryMemberRepository(); memberRepository.save(new Member(1L, "name", Grade.VIP)); OrderServiceImpl bean = ac.getBean(OrderServiceImpl.class); bean.setMemberRepository(memberRepository); bean.setDiscountPolicy(new FixDiscountPolicy()); Order order = bean.createOrder(1L, "itemA", 10000); Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000); }이렇게 테스트 코드를 작성하는게 맞을까요?
-
미해결진짜 현업에서 쓰이는 직장인의 실무 엑셀 - 파워쿼리 Advanced
파워쿼리 화면 구성이 다른 이유와 해결책이 궁금합니다
엑셀 파워쿼리 관련 내용 중 어떤 컴퓨터에서는 조건열이 보이고 어떤 컴퓨터에서는 보이지 않는 현상이 발생하였습니다.두 엑셀 버전 다 2016버전인데 이런 현상이 나타났습니다.조건열 이외에도 병합 기능할 때 조건열 안보이는 곳에서는 '내부(일치하는 행만)' 기능밖에 안보이고 조건열 보이는 컴퓨터에서는 6개 정도의 조건병합이 다 나왔습니다(왼쪽외부 등)조언 주시면 대단히 감사하겠습니다.
-
미해결프로들만의 차별화된 엑셀 데이터 분석과 차트 시각화
파워쿼리 화면 구성이 다른 이유와 해결책이 궁금합니다
엑셀 파워쿼리 관련 내용 중 어떤 컴퓨터에서는 조건열이 보이고 어떤 컴퓨터에서는 보이지 않는 현상이 발생하였습니다. 두 엑셀 버전 다 2016버전인데 이런 현상이 나타났습니다.조건열 이외에도 병합 기능할 때 조건열 안보이는 곳에서는 '내부(일치하는 행만)' 기능밖에 안보이고 조건열 보이는 컴퓨터에서는 6개 정도의 조건병합이 다 나왔습니다(왼쪽외부 등)조언 주시면 대단히 감사하겠습니다.
-
미해결스프링 핵심 원리 - 기본편
의존관계 필드 주입
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 똑같이 코드를 따라한 것 같은데 NoSuchBeanDefinitionException 이 터집니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
react-query 없이 동일한 동작이 가능할까요?
next의 확장된 fetch 기능만으로 동일하게 프로젝트를 만들 수 있을까요?react-query가 꼭 필요한가의 궁금증으로 시작해서 이런 글도 찾았는데,읽고 제가 내린 결론은 서버사이드 뿐만아니라 클라이언트 사이드에서의 캐싱처리를 위해 react-query를 사용한다 입니다.제가 이해한 내용이 맞을까요?
-
해결됨쥬쥬와 함께 하루만에 끝내는 스프링 테스트
카프카 실행에 문제가 있는 분들
노션에 작성된 의존성에 는 org.testcontainers:kafka 라고 적혀있는데, org.testcontainers:kafka:1.19.0 와 같이 버전 명시해주시면 해결됩니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
scanner 두번째 문제(홀수짝수) 질문드립니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]홀수 짝수 구하는 문제에서 선생님께서 말씀하신 삼항연산자로 구하는 거 기억 더듬으며 해봤는데 값은 나오거든요..혹시 잘못되거나 이상한 점이 없는지 질문드립니다!!
-
미해결스프링 핵심 원리 - 기본편
@Autowired 생략 주소찍기
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 중 memberRepository 와 discountPolicy 주소를 출력하는 것이 안 됩니다.logback.xml 문서는 이미 작성되어 있습니다.
-
미해결하울의 안드로이드 인스타그램 클론 만들기
1강 AndroidManifest.xml 코드 오류
com.howl.howlstagram_f16.LoginActivity라는 클래스를 찾을 수 없다고 뜨는데 해당 클래스를 불러오기 위한 다른 방법이 있을까요..? 영상과 다르게 한 부분이 없는데 이 부분에서 오류가 나 해결하는 것 좀 도와주시면 감사하겠습니다
-
해결됨독하게 시작하는 C 프로그래밍
변수이름 약자 질문드립니다.
char szBufferSrc[12] = {"TestString"};,char* pszSrc변수에서 sz와 psz가 의미하는 약어가 무엇인가요??문득 궁금증이들어 질문합니다 감사합니다.
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
CASE 아스타 위치에 따른 오류 문제
영상에서 선생님 구문데로 실행했는데 아스타 위치에 따라 작동이 됩니다.아스타를 SELECT 뒤에 *, 정상작동하나 AS NAME 뒤에서붙였을땐 오류가 나오는데 뭐가 문제일까요? 정상실행 경우(SELECT *, CASE )오류 발생END AS NAME, *SELECT CASE WHEN CategoryID = 1 THEN '음료'WHEN CategoryID = 2 THEN '탄산'ELSE '기타' END AS NAME, *FROM Products
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
제가 이해한 것이 맞느지 확인 부탁드립니당
이번에 만든 조회하는 api는 리스트로 반환해야 하기 때문ㅇ JSON이어야 하고그렇기에 함수 반환 값이 List<UserResponse>인건가요?그리고 등록 api에서 만든 users리스트 수만큼 for문 돌려서 진정한 결과 리스트(id도 포함되어있는) reponses를 만들어낸건가요..?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
수업을 들으면서 이해한 것이 맞는지 확인해주세요 ㅠㅠ
전체적인 흐름: postman(클라이언트)에서 body형식으로 보내준 user정보를 저장하는 api를 만들기. 다만 null값 허용x 1) dto역할의 UserCreateRequest.javapostman에서 body형식으로 보내준 user정보를 여기를 통하여 controller로 전달한다. 2) UserController.javauser관련된 api들이 정의되어 있는 곳. user 클래스에서 "예외 처리"를 거친 후에 들어온 값들을 add하면서 리스트에 추가한다. 3) domain의 User.java얘도 postman에서 body형식으로 보내준 user정보를 여기를 통하여 controller로 전달한다(?) 만약 name이 null값이면 거르고 아니면 저장한다. 뭔가 UserController.java랑 User.java 얘네들끼리만 서로 지지고볶는 것 같은데 왜 dto가 따로 있나 어려워요dto 없어도 domain에서 postman이랑 컨텍이 되는 거 아닌가요?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
파일 위치를 못찾겠습니다
깃허브에서 실습 예제(perfect guide?)를 다운받았습니다. 강의 영상에서는 user에 집어 넣으면 된다고 하셨지만, scikit learn 설치 이슈 때문에 가상환경을 만들어서 그런가 파일 위치가 다른 것 같습니다. 구글에 검색해보니 evns/new_base가 가상환경 경로 라고 하는데 또 막상 이곳에 파일을 넣으니 jupyter notebook에서는 보이지 않더라구요..어떻게 하면 좋을 까요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
WARNING: A Java agent has been loaded dynamically (스프링 통합 테스트에서)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. WARNING: A Java agent has been loaded dynamically (C:\Users\user\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.14.11\f9cb566608fbac6bc7bf54901a7aa11543a989ee\byte-buddy-agent-1.14.11.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseOpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 스프링 통합 테스트 강의에서 회원가입이나 중복 회원 테스트 실행은 잘 되는데 위의 문구가 나타나서 스프링이 도중에 중단됩니다. 강의 노트를 복붙하고 5분 40초 경에 인텔리제이를 실행했는데 위와 같은 문구가 뜹니다. 중복회원이나 회원가입 테스트는 체크 표시가 떴고 저 문구만 떴습니다. 위의 문구를 안 나오고 강사님처럼 문제없이 실행하려면 어떻게 해야 하나요?
-
해결됨Next.js 풀스택 Notion 서비스 만들기
테일윈드 자동정렬
강의를 보니 테일윈드 클래스 자동정렬 기능이 되어있으신거 같은데 prettier-plugin-tailwindcss 쓰시는건가요 아님 다른 방법이 있으신가요?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
캐시저장소에서 캐시데이터가 소멸되는 시기
(검증헤더와 조건부 요청의 사용여부와는 관계없이 모든 경우에) 클라이언트가 데이터를 요청할 때 마다 클라이언트는 캐시 저장소를 먼저 뒤진다. 데이터가 유효하다면 해당 요청 자체가 서버에게 도달하지 않고 캐시된 이미지를 바로 사용한다.(검증헤더와 조건부 요청을 사용하지 않는 경우) 클라이언트는 데이터 요청을 보낼 때 먼저 캐시 저장소를 뒤진다. 이 때, 요청한 캐시 데이터의 유효시간이 초과되었다면, 해당 요청은 서버에게 전달되며 클라이언트는 서버로부터 데이터를 새로 전달받는다.(검증헤더와 조건부 요청을 사용하는 경우) 클라이언트는 데이터 요청을 보낼 때 먼저 캐시 저장소를 뒤진다. 이 때, 캐시 데이터의 유효시간이 초과되었다면, 데이터 최종 수정일 값을 검증헤더if-modified-since에 넣어 서버에게 요청을 전달한다. 서버가 이를 확인하여 캐시된 데이터의 변경여부를 판단하고, 변경되지 않았다면 메시지 바디 없이 304 Not Modified 응답을 반환한다. 클라이언트는 응답 결과를 기반으로 캐시의 메타 정보를 갱신한다. 만약 데이터가 변경된 경우에는 클라이언트는 서버로부터 데이터를 새로 응답받는다.⇒ 즉, 캐시의 유효기간이 지났더라도 검증헤더와 조건부 요청을 사용하면, 데이터가 변경되지 않았을 경우에는 캐시데이터를 재사용할 수 있게 해준다. 이렇게 정리를 해보았는데요, 궁금한 점이 있습니다! (+ 위 정리 내용이 정확할까요?)위 설명대로라면 캐시 데이터의 유효시간이 초과된 경우에도, 캐시저장소에는 유효시간이 지난 캐시데이터가 존재해야 하는거잖아요, 그렇다면 '유효시간'이라는 것은 무엇을 의미하는 건가요? 캐시데이터의 유효시간이 지나면 바로 캐시저장소에서 해당 캐시데이터가 소멸된다고 생각했는데 그러니까 위 설명이 이해가 가지 않아서요,, 캐시저장소에서 유효시간이 지난 캐시데이터는 언제 소멸되는건가요?