묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
간단한 주문 조회 V4 : JPA에서 DTO로 바로 조회에 대한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]해당 강의에서 5:35초를 보시게 되면, 원래는 fetch join이 아닌 join이지만 public List<OrderSimpleQueryDto> findOrderDtos() { return em.createQuery( "select new jpabook.jpashop.repository.OrderSimpleQueryDto(o) " + " from Order o" + " join fetch o.member m" + " join fetch o.delivery d", OrderSimpleQueryDto.class ).getResultList(); }fetch join을 하게 되면 v3메서드와 동일한 결과가 나옴과 동시에 쿼리문도 동일하게 1개가 출력된 것을 확인하였습니다. 여기서 드는 의문점은' fetch join은 select절에 entity가 아닌 DTO를 명시하게 되면 안된다' 즉, 'fetch join은 select절에 entity만을 명시해야 한다' 라고 질문 글을 찾아보며 알게되었습니다. 하지만 결과는 예상과 다르게 잘 작동하여 의문이 들게 되었습니다.
-
해결됨실전! Querydsl
컨트롤러의 파라미터로 Pageable 인터페이스 사용할 때
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]포스트맨을 통해서 요청을 보낼 때 url파라미터를 통해 page와size를 설정하였는데요, 이는 MemberSearchCondition 말고 Pageable 또한 앞에 @ModelAttribute가 생략된 형태로 동작한다고 생각하면 될까요?실제 웹 사이트에서 페이징 처리된 부분의 버튼 같은 걸 누를 때 해당 파라미터들을 넣어주는 방식으로 동작할 것 같은데 맞을까요?
-
미해결Practical Testing: 실용적인 테스트 가이드
DTO -> 엔티티, 엔티티 -> DTO 과정에서의 빌더 패턴과 정적 팩토리 메서드 사용에 대해 질문 있습니다.
DTO -> 엔티티, 엔티티 -> DTO 과정에서의 빌더 패턴과 정적 팩토리 사용에 대해 아래와 같이 정리를 했는데 제가 정리한 방식이 타당한 방식인지 궁금합니다. DTO -> 엔티티엔티티의 생성자에 빌더 패턴을 적용합니다.외부에서 엔티티를 생성하려면 빌더 패턴을 사용하여 엔티티를 생성합니다. 예를들어 서비스 레이어에서 엔티티의 빌더 패턴을 사용하여 DTO를 엔티티로 변환하는 작업을 가집니다.엔티티쪽에서 DTO를 엔티티로 변환하는 정적 팩토리 메서드를 가지지 않는 이유 변화가 심한 DTO에 엔티티가 의존하는 것은 좋지 않다고 생각했습니다. 그래서 객체 생성에 빌더 패턴만 적용했습니다. 엔티티 -> DTODTO쪽에서 생성자에 빌더 패턴을 적용합니다.또한 엔티티 -> DTO로 변환하는 정적 팩토리 메서드를 만드는데 이때 DTO 객체 생성은 DTO쪽에서 정의한 빌더 패턴을 적용합니다.DTO는 엔티티에 의존해도 아무 문제가 없다고 생각합니다. 그래서 빌더 패턴도 사용하고 정적 팩토리 메서드도 사용하여 DTO 객체를 생성했습니다.이 둘을 같이 사용할 경우 빌더 패턴과 정적 팩토리 메서드 장점 모두 사용할 수 있다고 생각하여 2가지 모두 사용하여 DTO 객체를 생성하도록 했습니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
Service dto를 만드는 대신 도메인 객체를 생성하는 전략은 별로인가요?
안녕하세요. PresentationLayer 테스트(2) 마지막 부분에 service layer용 dto를 생성하여 서비스를 presentation layer와 분리하는 것을 확인했습니다.그렇다면 presentation Dto -> service Dto -> domain으로 변경이 이루어질 것 같은데요..혹시 컨트롤러에서 바로 도메인 객체로 바꿔서 presantatio Dto -> domain 구조로 바꾸는 것은 좋지 않은 아키텍처일까요 ???
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
제대로 이해했는지 확인하고싶습니다.
가장 처음에 했던 트랜잭션은 각각의 리포지터리에서 @Transactional을 걸어줘서 별도로 커밋, 롤백 되게끔 만들었습니다. 이후, 마지막에는 LogRepository에 @Transactional(propagation = Propagation.REQUIRES_NEW)를 사용해서 트랜잭션 동기화 매니저에서 다른 커넥션을 가져와서 별도로 커밋, 롤백 되게끔 만들었습니다. 여기서 궁금한 점은 처음과 마지막의 트랜잭션의 구성은 다르지만 결과값은 똑같은 게 맞을까요? 다른 점이 있다면 혹시 무엇인지 알려주시면 감사하겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
데이터베이스 연결 에러
[질문 내용]여기에 질문 내용을 남겨주세요.2024-10-16T00:11:04.326+09:00 INFO 16884 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2024-10-16T00:11:04.335+09:00 INFO 16884 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2024-10-16T00:11:04.336+09:00 INFO 16884 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.20] 2024-10-16T00:11:04.387+09:00 INFO 16884 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2024-10-16T00:11:04.387+09:00 INFO 16884 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1088 ms 2024-10-16T00:11:04.433+09:00 INFO 16884 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2024-10-16T00:11:06.881+09:00 ERROR 16884 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: getsockopt: localhost" [90067-224]어플리케이션을 실행했더니 이러한 에러가 뜹니다... 제가 생각하기엔C:\Users\재성 이 폴더에 db파일이 없어서 생기는 오류같은데 어떻게 해결해야할 지 모르겠습니다... 다른 강의 이것저것 번갈아가면서 듣다 보니 db파일을 삭제했다가 새로 만들고 반복했었는데 오랜만에 강의 들으니까 db에서 오류가 발생합니다ㅠ
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
Admin 뷰개발-테이블 페이지와 관련한 질문드립니다.
강의를 보면 웹사이트에 접속을 했을 때 id가 가장 먼저 출력이 되는데 저는 id가 중간에 출력이 됩니다. 코드를 아무리 봐도 이유를 모르겠어서 질문 드립니다. 어느 부분의 코드를 봐야 위 내용을 수정할 수 있나요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
aws react 배포
리액트를 배포하려고 하는데 502error -nginx- 가 뜹니다. 환경 개요의 상태는 'Degraded'가 발생합니다. 이벤트의 로고에는 'Environment health has transitioned from Info to Degraded. Application update completed 28 seconds ago and took 73 seconds. Impaired services on all instances.' 와 같은 문구가 발생합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
강의 43분 35초쯤에 대해 질문 있습니다.
OrderResponse에서 of 메서드 부분에 빌더 패턴과 정적 팩토리 메서드를 같이 쓰는걸로 이해를 했습니다. 저는 빌더 패턴으로 객체를 생성하는 것과 정적 팩토리 메서드로 객체를 생성하는게 결이 약간 다른(?) 느낌으로 이해를 해서 이렇게 같이 써도 상관이 없는지 궁금합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Transactional 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.원래는 service단에 @Transactional 을 걸어주는게 맞지만 지금은 강의하는거기때문에 JpaItemRepositoryV2에 @Transactional을 선언해준건가요 ?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
엔티티 설계 질문
JPA 엔티티 설계에 대한 질문입니다. 상품 엔티티가 있는데 상품을 구분하는 카테고리가 아래와 같이 2종류 있다고 가정하면상품 배송 카테고리 (직접배송, 퀵배송, 일반택배배송, 픽업가능) -> 1:N 가능상품 종류 카테고리 (명품, 의류, 전자제품 등등) -> 1:N 가능 어떻게 설계하는 게 좋을까요?상품 Entity상품 id상품이름배송 카테고리 리스트종류 카테고리 리스트=> 상품 테이블, 상품 배송 카테고리 테이블, 상품 종류 카테고리 테이블 (총 테이블 3개 생성됨) 상품 Entity상품 id상품이름카테고리 리스트 (배송 카테고리와 종류 카테고리를 한 리스트에 다 넣어놓음)=> 상품 테이블, 상품 카테고리 테이블 (총 테이블 2개 생성됨)
-
미해결Practical Testing: 실용적인 테스트 가이드
yml 프로파일 관련해서 질문 있습니다.
spring: profiles: default: local datasource: url: jdbc:h2:mem:~/cafeKioskApplication driver-class-name: org.h2.Driver username: sa password: jpa: hibernate: ddl-auto: none --- spring: config: activate: on-profile: local jpa: hibernate: ddl-auto: create show-sql: true properties: hibernate: format_sql: true defer-datasource-initialization: true # (2.5~) Hibernate 초기화 이후 data.sql 실행 h2: console: enabled: true --- spring: config: activate: on-profile: test jpa: hibernate: ddl-auto: create show-sql: true properties: hibernate: format_sql: true sql: init: mode: never 아래와 같이 default: local로 설정하면 on-profile: local로 부분이 실행된다는 걸까요?spring: profiles: default: local ... --- spring: config: activate: on-profile: local ... 하나의 파일에 local 관련 yml, test관련 yml을 작성하면 yml 파일이 굉장히 비대해질꺼 같은데 실무에서도 하나의 yml에 전부 집어넣는지 아니면 yml을 분리하는지 궁금합니다.--- 이 부분은 구분 지을려고 그냥 넣은건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest 오류
Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/Users/kimhs/OneDrive/%EB%AC%B8%EC%84%9C/springboot/jpashop/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.10.2/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 11s4 actionable tasks: 1 executed, 3 up-to-date MemberRepositoryTest 를 실행하면 위와 같은 오류가 발생합니다 원인이 무엇일까요
-
해결됨Practical Testing: 실용적인 테스트 가이드
도메인 레이어 질문
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요. 우빈님 두 가지 질문이 있습니다. 도메인 레이어에 Repository를 넣으셨는데 도메인과 Repository를 같이 두신 이유가 있으신가요?현재 도메인 모델과 Jpa Entity를 동일하게 가져가고 있는데 이로인해서 겪으신 문제는 없으신가요? 엄격한 DDD를 위해서라면 도메인 모델을 JPA 엔티티로 쓰는 것이 아니라 JPA 엔티티에 Convert 메서드를 만들어서 처리하고 있더라구요. 이에 대한 우빈님의 생각이 듣고 싶습니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
강의 2분 40초 부분에 대해 질문 있습니다.
강의 2분 40초쯤에 "개발하면서 고민했던거를 테스트 코드에 녹여낸다." 이 부분에 대해 궁금증이 있습니다. 테스트 코드를 통해서(예외 케이스도 짯다면) 다양한 케이스들 고려할 수 있기 때문에 테스트 코드에 녹여낼 수 있다.구현 로직을 테스트 코드로 테스트 하면서 살펴 볼 수 있기에 구현 로직에 대해 고민 했던 부분도 담아낼 수 있다.이렇게 이해를 했는데 맞게 이해를 한건지 궁금합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
bizException 테스트 코드에서 db에 save되는지 궁금합니다.
@Test void bizException() { //given Order order = new Order(); order.setUsername("잔고부족"); //when try { orderService.order(order); } catch (NotEnoughMoneyException e) { log.info("고객에게 잔고 부족을 알리고 별도의 계좌로 입금하도록 안내"); } //then Order findOrder = orderRepository.findById(order.getId()).get(); Assertions.assertThat(findOrder.getPayStatus()).isEqualTo("대기"); }@Transactional public void order(Order order) throws NotEnoughMoneyException { log.info("order 호출"); orderRepository.save(order); log.info("결제 프로세스 진입"); if (order.getUsername().equals("예외")) { log.info("시스템 예외 발생"); throw new RuntimeException("시스템 예외"); } else if (order.getUsername().equals("잔고부족")) { log.info("잔고 부족 비즈니스 예외 발생"); order.setPayStatus("대기"); throw new NotEnoughMoneyException("잔고가 부족합니다"); } else { log.info("정상 승인"); order.setPayStatus("완료"); } log.info("결제 프로세스 완료"); }예외가 터지는데 save의 insert쿼리가 나가는지 궁금합니다. 테스트 코드가 성공했고 (테스트코드) Order findOrder = orderRepository.findById(order.getId()).get(); 이 코드에서 findOrder이 성공적으로 가져왔습니다. 그러면 서비스 코드에서 orderRepository.save(order)이 성공적으로 커밋이 된건가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL 쿼리 생성 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.List<Member> findMembers = em.createQuery( "select m from Member m where m.username like '%kim%'",Member.class).getResultList(); 위와 같이 작성하여 실행해보니 위와 같이 escape '' 이 붙여진 상태로 쿼리가 생성이 되는데 혹시 어떤게 잘못된건지 알 수 있을까요? 버전정보는 아래와 같습니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
7장 테스트 에러
똑같이 코딩해서 테스트를 했는데 에러가 발생합니다.이유가 무엇일까요?똑같이 코딩해도 에러가 발생하니 답답하네요.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
섹션4 목록처리를 보고있어요
리스폰스로 json값이 오는건 이해가가는데 ], "pageNumList": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], "pageRequestDTO": { "page": 5, "size": 10 }, "prev": false, "next": true, "totalCount": 105, "prevPage": 0, "nextPage": 11, "totalPage": 0, "current": 0} 이값들은 api어느부분에서 전송하는건지 알수있을까요?
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
Docker 데스크탑에서 push to Docker hub 를 클릭한 후 오류가 납니다...
Engine runningRAM 1.08 GBCPU --.-- %Disk --.-- GB avail. of --.-- GBBETATerminalv4.34.3 (HTTP code 400) unexpected - invalid tag format위와 같은 오류가 나는데 왜 그런 걸까요? 인텔리제이에서 빌드할 때도 문제가 없었습니다...