묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
대규모 트래픽 환경에서는 Jpa 보단 서브쿼리를 활용하시나요?
22:40에 서브 쿼리를 제시해주셨는데요.쿼리를 분리하여 애플리케이션 로직으로 풀수 없을때만 nativeQuery를 사용해서 서브쿼리를 즉시 적용하시는 걸까요? 아니면 서브쿼리를 적극적으로 사용하시는 걸까요? 대규모 트래픽 환경에서는 Jpa, Querydsl를 단순한 기능에 사용할때도 조심해서 써야할 것 같아요.. 팀 컨벤션이 도메인을 풍부하게 활용하는 거라면 nativeQuery는 지양해야 할것 같기두 하네요. 지식이 부족해서 가정만 하게 되네요 ㅠ.ㅠ답변 부탁드립니다~ (반복 학습 필수네요. 강의 1분 1초를 씹고 뜯고 맛보고 즐기면서 공부하겠습니닷!)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
v4에서 DTO 전용 리포지토리를 만들 때 유지보수 비용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]package jpabook.jpashop.repository.order.simplequery; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import java.util.List; @Repository @RequiredArgsConstructor public class OrderSimpleQueryRepository { private final EntityManager em; public List<OrderSimpleQueryDto> findOrderDtos() { return em.createQuery( "select new jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address)" + " from Order o" + " join o.member m" + " join o.delivery d", OrderSimpleQueryDto.class) .getResultList(); } } 이 코드 같은 경우 유지보수가 더 좋아졌다고 할 수 있나요?만약, 다른 도메인 계층에 있는 엔티티가 수정될 경우 오히려 이 부분도 수정해야 하기 때문에 전체적으로 유지보수 비용이 증가한다고도 볼 수 있지 않나요? 원래처럼 일반 리포지토리에 두었을 때 API에 핏하게 설계했기 때문에 API 스펙이 변경될 경우 리포지토리를 수정해야하는 거랑 따로 DTO 전용 리포지토리를 만들었을 때 다른 도메인 계층의 엔티티가 수정되었을 때 이 부분 코드를 수정하는 거랑 유지보수 비용이 어느게 더 적은 지 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
XxxResponse를 service 패키지에 두신 이유가 궁금합니다.
XxxRequest / XxxResponse 클래스를 controller 패키지 하위가 아닌 Service 패키지 하위에 두신 이유가 궁금합니다. 의존성 방향을 Controller부터 단방향을 유지하기 위해 하신것으로 유추 하는 바입니다. 하지만 XxxRequest / XxxResponse가 service 패키지 클래스에 있는게 조금 어색해 보여서요. 저는 controller 하위 패키지에 requeset / response를 두고facade 혹은 service에 클래스로 묶어서 넘길경우 에는는 domain 계층에 만든 dto를 생성해서 넘깁니다. 제가 생각한게 맞는지 답변 부탁드립니다~ (강의 최고입니다. 저만 듣고 싶어요 흙흙)
-
미해결실습으로 배우는 선착순 이벤트 시스템
카프카를 도입하고 난 뒤 로그로 보여지는 장점을 발견하지 못하고 있습니다.
안녕하세요 강사님. 강의 마지막에 API서브모듈에서 직접 MySQL로 여러 쓰레드가 JPA save를 통해 INSERT하는 과부하가 발생하던 것을 카프카를 통해서 처리량을 조절할 수 있다고 말씀하셨습니다. 카프카를 사용하는 것만으로도 처리량이 조절된다는 뜻이 잘 이해가 가지 않습니다. 특히 컨슈머서브모듈에서 보여지는 로그를 확인해보면 여전히 단 건으로 SQL들이 전송되는 것을 확인할 수 있었는데요. 배치방식으로 여러 SQL을 한데 모아 한번에 SQL횟수를 줄여주는 것을 기대했으나 그렇지 않아 어떤 원리로 처리량이 줄어드는 것인지 이해를 못했습니다ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
mvc1편에서 스프링부트 설치한적이 있는데 또 해야하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.spring mvc1편에서 스프링부트 설치한적이 있는데 또 해야하나요?설치할때 artifact name부분이 다르긴 합니다mvc1편에서는 artifact, name이 servlet이였고 입문에서는 hello-spring이고packagename도 다르네요 새로 설치해야할까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest를 junit5용으로 고쳤는데 오류가발생합니다 + junit4를 사용해야만 할까요?
https://drive.google.com/file/d/1PBHzDQJ0Odvh2KWMa_BTOu3PZqHrMJkj/view?usp=drive_linkMemberRepositoryTest를 실행하면 이렇게 됩니다. junit5로 하고 있는데 이런식으로 오류가 발생합니다. JPA와 DB 설정, 동작확인 13분경까지 들었습니다. JpashopApplication를 실행해도 오류가 발생하기 시작했습니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
키생성 방식에 따른 성능
안녕하세요.문제점 해결하기 강의에서 실습을 잘 진행했습니다.실험을 하며 결과를 관측하던 중,@NoArgsConstructor(access = AccessLevel.PROTECTED) @RequiredArgsConstructor @Entity public class Coupon { @Id @GeneratedValue private Long id; }위와 같이 @GeneratedValue를 적용하면로그패턴도 달라지고 성능이 급격하게 나빠지더라고요 @Id @GeneratedValue(strategy = GenerationType.IDENTITY)로 지정하면 실습이 잘 진행됩니다.왜 이런차이가 발생하는지 알 수 있을까요?strategy를 선택하지 않으면 AUTO이며 이는 mysql에서 IDENTITY를 선택한 것과 같게 나와야하는데 예상과 달라 질문드려봅니다.
-
해결됨이거 하나로 종결-스프링 기반 풀스택 웹 개발 무료 강의
수강하는데 얼마나 걸릴까요
안녕하세요. 수강해보려고 하는데, 최대한 빠르게 끝내보고 싶습니다.c++ 문법 정도만 알고 있는 수준인데, 공부 기간은 얼마 정도로 예상하시나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest junit5로 고친후 오류발생 + junit4를 사용해야만 할까요?
junt4로 gradle에서 설정하려고 하면 오류가 발생해서 juit5로 하는 중입니다. MemberRepositoryTest를junit5버전으로 고쳐서 아래의 코드로 실행했는데 오류가 나고 있습니다import jpabook.jpashop.Member; import jpabook.jpashop.MemberRepository; //import jpabook.jpashop.domain.Member; //import jpabook.jpashop.repository.MemberRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.transaction.annotation.Transactional; @ExtendWith(SpringExtension.class) // JUnit 5 방식 @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() { Member member = new Member(); member.setUsername("memberA"); Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); Assertions.assertThat(findMember).isEqualTo(member); // JPA 엔티티 동일성 보장 } }밑에는 오류입니다.Unable to find a @SpringBootConfiguration by searching packages upwards from the test. You can use @ContextConfiguration, @SpringBootTest(classes=...) or other Spring Test supported mechanisms to explicitly declare the configuration classes to load. Classes annotated with @TestConfiguration are not considered.java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration by searching packages upwards from the test. You can use @ContextConfiguration, @SpringBootTest(classes=...) or other Spring Test supported mechanisms to explicitly declare the configuration classes to load. Classes annotated with @TestConfiguration are not considered.at org.springframework.util.Assert.state(Assert.java:79)1. @SpringBootTest(classes=...)로 명시적으로 설정 클래스 지정2. @SpringBootApplication이 있는 클래스의 위치 확인3. @ContextConfiguration을 사용해서 명시적으로 설정 클래스 지정이세가지를 시도해도 안되고 있습니다. 아니면 juni4룰 사용해야만 할까요?build.gradle에 JUnit4 추가 testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" }를 하면 Build file 'C:\Users\Peter\Desktop\study\jpashop\build.gradle' line: 45A problem occurred evaluating root project 'jpashop'.> Could not find method testImplementation() for arguments [org.junit.vintage:junit-vintage-engine, build_55eer8btj8rd1l6xp0yqapa0y$_run_closure6@6e20627f] on root project 'jpashop' of type org.gradle.api.Project.라고 나옵니다.
-
미해결백엔드 개발을 위한 필수 강의 - 스프링 부트3
SbbApplicationTests 런오류 tetJpa부분?
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2025-02-13T00:15:43.156+09:00 ERROR 7780 --- [ main] o.s.boot.SpringApplication : Application run failedError creating bean with name 'entityManagerFactory'이런 오류가 뜹니다 쿼리가 안 만들어져요 이오류 때문에 ㅜ
-
미해결백엔드 개발을 위한 필수 강의 - 스프링 부트3
SbbApplicationTests에서 JUnit Test런을 하면 x표시하며 오류가나요!!!
package com.mysite.sbb; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest; @SpringBootTestclass SbbApplicationTests { @Autowiredprivate QuestionRepository questionRepository; @Testvoid testJpa() {Question q = this.questionRepository.findBySubjectAndContent("sbb가 무엇인가요?", "sbb에 대해서 알고 싶습니다.");assertEquals(1, q.getId());}}
-
미해결백엔드 개발을 위한 필수 강의 - 스프링 부트3
쿼리문이 console에서 형성이 안되고 아래와 같은 코드오류걸려요
package com.mysite.sbb; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest; @SpringBootTestclass SbbApplicationTests { @Autowiredprivate QuestionRepository questionRepository; @Testvoid testJpa() {Question q = this.questionRepository.findBySubjectAndContent("sbb가 무엇인가요?", "sbb에 대해서 알고 싶습니다.");assertEquals(1, q.getId());}}
-
미해결백엔드 개발을 위한 필수 강의 - 스프링 부트3
SbbApplicaitonTest JUnit 테스트 런을 하면 아래와 같은 오류가 Console에 뜹니다
19:49:22.386 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [com.mysite.sbb.SbbApplicationTests]: SbbApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration. console에 위와 같은 문구가 나오고 아래로 실행 문구가 뜨지 않습니다.
-
미해결백엔드 개발을 위한 필수 강의 - 스프링 부트3
[리포지터리] SbbApplicationTests에서부터 오류
package com.mysite.sbb;import java.time.LocalDateTime;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass SbbApplicationTests {@Autowiredprivate QuestionRepository questionRepository;@Testvoid testJpa() {Question q1 = new Question();q1.setSubject("sbb가 무엇인가요?");q1.setContent("sbb에 대해서 알고 싶습니다.");q1.setCreateDate(LocalDateTime.now());this.questionRepository.save(q1); // 첫번째 질문 저장Question q2 = new Question();q2.setSubject("스프링부트 모델 질문입니다.");q2.setContent("id는 자동으로 생성되나요?");q2.setCreateDate(LocalDateTime.now());this.questionRepository.save(q2); // 두번째 질문 저장} }런타임을 시작하면 위에 첨부된 파일에 빨간색 x표시로 오류가 뜹니다. Bootdashboard에 중지버튼이 비활성화되어있어요
-
해결됨웹소켓/STOMP 채팅서비스(spring, vue, redis)
소스파일
깃 또는 소스파일은 어디서 확인할 수 있죠?
-
미해결[개념은 호옹~, 실습 빡] 스프링 부트, 입문!
21강 자율 과제중 update
@Test @Transactional void update_성공_존재하는_id와_title만있는_DTO() { //예상 Long id = 1L; String title ="title"; ArticleForm dto = new ArticleForm(id, title,null); Article expected = new Article(id, title,"1111"); //실제 Article article = articleService.update(id, dto); //비교 assertEquals(expected.toString(),article.toString()); }자율과제로 내주신 Test를 진행하다가 궁금한 점이 생겼습니다.web에서 수정을 할 때는2025-02-12 17:36:48.037 DEBUG 960 --- [nio-8080-exec-4] org.hibernate.SQL : update article set content=?, title=? where id=?2025-02-12 17:36:48.039 TRACE 960 --- [nio-8080-exec-4] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [댓글]위 와 같이 update 구문을 확인 할 수있었는데요.Test를 진행 할때는 해당 구문의 log를 볼 수가 없었습니다.그렇다면 위에 코드로 작성한 구문이 잘 못된 걸까요? 아니면test시에는 구문이 안보이는건가요?
-
해결됨RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
강의와 살짝 무관하지만.. MQ에 대한 질문이 있습니다!
RabbitMQ도 충분히 강력한 기능을 제공하는 것으로 보입니다.근데 이제 한번 소비한 메시지는 소비하면서 어딘가에 또 저장하지 않는 이상 재시도가 어려운것으로 알고있습니다.현업에서 RabbitMQ를 도입하시고 사용하시면서 Kafka의 어떤 토픽의 0번 오프셋부터 읽기(earliest)같은 요구사항이 있었던 적은 없으셨는지 궁금합니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
조회수 어뷰징 방지 부분에서 질문이 있습니다.
안녕하세요."조회수 어뷰징 방지 정책 구현" 강의의 ViewApiTest.viewTesst를 실행한 다음redis가 동작하는 docker에 접속해 redis-cli를 실행하고 "keys *" 명령어를 실행하면,distributed lock이나 조회수에 관련된 key를 찾을 수 없습니다.database 0~15를 돌며 "keys *"를 실행 했을 때 (empty array)를 응답 받고 있습니다.어떤 방법으로 결과를 확인할 수 있을까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
댓글 api delete test 에러
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 댓글 최대 2 depth - CUD API 테스트 & 테스트 데이터 삽입 강의 시청 중 Test 코드에서 void delete()를 실행하면 이미지와 같이 테스트는 통과를 합니다그런데 mysql에서 명령어를 입력을 하면 deleted에는 그대로 0으로 되어 1로 변경되지 않는 문제가 있어 이전 영상을 다시 보며 모든 코드를 확인하였는데 코드는 동일하고 create, read test는 생성되고 조회되며 delete만 테스트만 실행되고 넘어가고 있습니다. 지금까지 작성한 코드 첨부합니다.https://drive.google.com/file/d/1O51-OdLHnOVnMoywcGP_h1aWoroFleF3/view?usp=drive_link
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
vite + react <MainPage/> intelij
안녕하세요 인텔리제이 사용중인데create react app으로 하게 되면 더이상 지원하지 않는다 하여 vite + react로 적용해서 프로젝트 만들어서 하고 있습니다현재 2강 React-Router 이용해서 메인 페이지 띄우는 작업중인데 오류가 발생하여 진행이 안됩니다 그리고 매번 강의 때마다 오류 수정하느라 강의가 원활하지 않습니다 강의는 더이상 업데이트 계획이 없으실까요? 리액트 프로젝트 생성부터 막혀서 진행이 원할하게 되지않습니다 환불하고 싶은데 기간도 지나서 환불도 안되고 답답하네요 매번 이런식으로 물어보면서 수정해야 하나요?? 매뉴얼이라도 만들어주세요 정말 불편합니다