묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
다중 데이터를 삭제 할 때
안녕하세요.호돌맨님 인강 들으면서 어찌저찌 취업하게 된 신입 개발자입니다. 현재 postDelete 로 단일 데이터를 검증 후 삭제하고있는데,만약 List로 된 다중 PK 를 검증하고 삭제할 때는 어느 방법이 좋은건지 잘 모르겠습니다. public void postAllDelete(List<Long> postIds) { //1번 List<Post> posts = postRepository.findAllById(postIds); if(posts.isEmpty()) throw new IllegalArgumentException("삭제할 게시글이 존재하지 않습니다."); postRepository.deleteAll(posts); //2번 postIds.forEach(e-> { Post post = postRepository.findById(e) .orElseThrow(PostNotFound::new); postRepository.delete(post); }); } 1번 같은 경우는 조회 및 삭제 각 한번씩 DB 를 호출해서 성능적으로 좋다고 생각하는데,리스트에 담겨져있는 PK 가 유효한지 검증하려면 stream API 를 사용하여 map 으로 PK 추출 후 filter 로 검증을 하는게 좋은건지, 혹은 다른 방법이 있는지 궁금합니다 물론 현재는 데이터가 많이 없으니 어느 방법을 채택해도 상관없지만추후에 대량의 데이터를 접하게될 때를 생각하다보니,, 어떻게 보면 인강과 관련없는 질문이긴한데,,염치 불구하고 도움 주시면 감사하겠습니다.
-
미해결토비의 스프링 부트 - 이해와 원리
Springboot 3.2 이상에서 파라미터 추론관련
스프링부트 3.3.7 버전으로 실습하다가 DispatcherServlet 이 hello() 메서드의 파라미터 String name을 못가져오는 에러를 겪었습니다.검색좀 해보니 부트 3.2, 스프링6.x 이상부터는 더이상 파라미터 추론을 기본으로 하지 않는다고 하네요. https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes 컴파일 시 -parameters 옵션을 사용하거나@RequestParam() 어노테이션을 사용하여 해결가능합니다 !
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
그래들 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]저는 Gradle - Groovy / 3.4.1 / open JDK 17 / 이클립스-STS4로 강의를 설정하려 하는데 계쏙 오류가 나서 질문드려봅니다.메이븐으로 설정할 시에는 위와 같은 옵션 및 이클립스에서 서버 구동까지 문제없이 잘 되는데 그래들로 하는경우 계속 오류가 나서 프로젝트가 설정되지 않습니다.그래들로 할 경우 인텔리제이로 해야하는건가요??
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
Authentication이 인증 할 때, 인증 이후 모두 사용되는 이유
안녕하세요. 좋은 강의 올려주셔서 감사하게 잘 듣고 있습니다. Authencation 클래스에 대해서 배우면서 궁금한 점이 생겼습니다. Authentication 클래시는 인증을 할 때, 그리고 인증 후에 인증에 대한 정보로서 두 상황에서 쓰이는 거 같습니다. 그런데 사실 이 두 상황은 상당히 다른 것 같고, 그다지 동일한 값을 쓰지도 않는 것 같습니다. 예를 들어, getCredentials는 인증 할 때만 쓰이고, isAuthenticated같은 경우는 인증 후에만 쓰일 것 같습니다. 이렇게 다른 상황에 쓰이는데도 Authentication 클래스 하나로 합쳐서 쓰는 이유가 있나요? 둘을 구분해 각각의 클래스로 제공하면 더 깔끔할거 같다는 생각이 들어 질문드려봅니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성해서 intellij에서 열었는데 오류
[질문 내용]쌤, 이렇게 프로젝트를 생성했는데, 오류가 납니다. ㅠㅠ뭘 해줘야할까요? 프로젝트 지우고 다시 generate해서 압축 풀고 build.gradle로 열어도 또 똑같은 오류가 납니다 ㅠㅠ!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
멀티 모듈 방식 질문입니다.
안녕하세요 강의 잘 듣고 있습니다.현재 게시글 조회수 부분 보고있는데요 헷갈리는게 있습니다.멀티 모듈 방식 이라 aricle과 view 모듈이 나눠져 있는데요현재는 게시글 조회 api와 게시글 조회수 증가 api가 나뉘어져 있는거같은데요 프론트에서 게시글 조회 시 이 2개의 api를 사용하는 걸까요?게시글 조회 api에서 게시글 조회 -> redis 조회수 1 증가 이렇게 하나의 api가 아니라 실무에서도 api를 나누는 방식으로 진행하는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
ERD 설계 질문
숨고와 같은 구인 구직 사이트인데 특정 작물에 대한 전문가와 매칭해주고 견적이 나오는 서비스를 프로젝트로 만들려고 생각중입니다. 이렇게 종류를 선택하면(위에 사진1에서 아래 사진2으로 넘어감니다.) 서비스일 경우 이런 카테고리는 따로 erd를 만들어 주어야 하나요? 아니면 enum으로 빼는 건지 감이 정말 1도 안 잡혀서 질문 드립니다. 견적 엔티티를 이런식으로 만들고 컨설팅 형태 이런 것도 enum으로 만드나요?나머지는 속성값으로 들어가는 것은 알고 습니다.) 그리고 맨 밑에 경우 만약 사진하고 글을 같이 첨부해서 컨설팅 내용을 신청할경우 이것도 erd로 따로 빼 놓나요?( aws 로 작업할경우 s3로 이미지만 따로 저장하는 것은 알 고 있습니다.)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderController 에서 {orderId} 경로변수 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의를 듣던 중 궁금한 내용이 생겨 질문합니다.<td> <a th:if="${item.status.name() == 'ORDER'}" href="#" th:href="'javascript:cancel('+${item.id}+')'" class="btn btn-danger">CANCEL</a> </td> function cancel(id) { var form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", "/orders/" + id + "/cancel"); document.body.appendChild(form); form.submit(); }위 자바 스크립트 코드를 보면, post 방식으로 전송할때, item.id 를 cancel 함수의 매개변수로 전달하고, 이 item.id 가 /orders/id/cancel 에 들어갑니다. @PostMapping("/orders/{orderId}/cancel") public String cancelOrder(@PathVariable Long orderId){ orderService.cancelOrder(orderId); return "redirect:/orders"; }반면에 , OrderController 의 위 메소드에서는 , 경로변수가 {orderId} 로 설정이 되어있습니다. 왜 itemId 를 받아와서 orderId 로 사용하는 것인지 궁금합니다. 만약 그것이 아니라면 제가 어떤 부분을 놓치고 있는 것인지 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
강의자료 파워포인트 기준 361~362 페이지를 보면
이렇게 나타나고 있는데요.path > '00a0z' 아닌가요??
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
묵시적 조인이 안일어나는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]13:50 쯤에 oi.order.id 부분에서 묵시적 조인이 안일어나는 이유가 orderItem에서 order로가는 외래키가 있어서가 맞나요? 다른 필드에 접근하면 묵시적 조인이 일어나는지 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
ArticleRepository의 네이티브 쿼리부분 질문드립니다...
안녕하세요~~ 강의 너무 잘 듣고 있는 1인입니다.다름이 아니라 네이티브 쿼리 작성 부분에서 에러가 나는데 이게 이곳저곳 찾아봐도 해결이 안돼서요ㅠㅠ 자꾸 아래 부분에서 에러가 납니다... 참고로 툴은 vscode로 spring extension받아서 사용중입니다... LIMIT :limit OFFSET :offset " @Query( value = "SELECT article.article_id, article.title, article.content, article.board_id, article.writer_id, " + "article.created_at, article.modified_at " + "FROM ( " + " SELECT article_id " + " FROM article " + " WHERE board_id = :boardId " + " ORDER BY article_id DESC " + " LIMIT :limit OFFSET :offset " + ") t " + "LEFT JOIN article ON t.article_id = article.article_id", nativeQuery = true ) List<Article> findAll( @Param("boardId") Long boardId, @Param("offset") Long offset, @Param("limit") Long limit );
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
"회원 도메인과 리포지토리 만들기" 강의까지 듣고 궁금한 점이 있어 질문 남깁니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. "회원 도메인과 리포지토리 만들기" 강의까지 듣고 궁금한 점이 있어 질문 남깁니다~ HelloController와 같은 컨트롤러 클래스나Repository 인터페이스의 구현체인 MemoryMemberRepository 클래스 전부 객체가 다 생성되고 동작한다고 보면 될까요?그렇게 생성된 객체들을 스프링 빈이 관리한다고 보면 될까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Selet All 쿼리에서 반복적으로 Clustered Index 탐색 하는지 궁금 합니다.
select * from article where board_id = 1 order by article_id desc limit 30 offset 1499970; 해당 SQL 문을 실행하면 선생님이 설명 해주신 것 처럼 먼저 Secondary Index 에서 offset 0 부터 탐색이 일어나는데요.Secondary Index 에서 offset 0 조회 한 다음 Clustered Index 에서 데이터를 찾는다고 해주셨습니다. 이러한 과정을 offset 1499999 까지 반복 과정이 발생 하는데왜 Secondary Index 에서 탐색 후 Clustered Index 에 데이터를 찾는 과정이 필요한지 궁금 합니다. 그러니깐 Secondary Index 에서만 일단 1499999 번 탐색한 다음에 Clustered Index 을 통해 그 외 데이터 (select *) 을 가져오면 되는것이 아닌가요? 제가 아직 인덱스에 대한 지식이 부족해 이런 질문을 한건데요ㅠ 다시 정리해서 질문 드리자면 왜 Secondary Index 을 통해 offset 순번 1499999 까지 도착 하지 않았는데 불필요하게 Clustered Index 까지 탐색하는가 입니다!
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
멀티모듈 지식 습득에 관하여 질문 드립니다.
안녕하세요 강사님 새해 복 많이 받으세요!개인적으로 궁금한 점이 있어 질문을 드리게 되었습니다.멀티 모듈 및 멀티 모듈 셋팅에 관한 지식을 공식 문서를 보시고 영어를 해석 하거나 혹은 번역 기능을 활용하여 직접 테스트를 하시면서 습득하셨는지 아니면 도서나 타 강의로 습득을 하셨는지 질문 드리고 싶습니다! 간혹 다른 타 강의에서 질문을 드릴 때 공식 문서 링크를 주셔서 공식 문서를 보았는데 봐도 내용이 너무 방대하고 어떻게 해야 할지 잘 모르겠더라고요 그러면 그냥 실력이 부족한 것일까요? 아니면 제가 제대로 시간을 제대로 들이지 않고 탐독하지 않은 것일까요? 제가 해당 강의에서 개인적으로 느끼기에는 멀티 모듈 및 세팅 방법, 디테일 한 내용이(apply piugin 설정, bootJar.enabled=true, jar.enabled=true 같은) 일반적인 지식이 아닌 생소한 지식이라고 생각을 했습니다.(일반적인 지식이었다면 비전공자여서 그랬나 봅니다 ㅠㅠ...) 비전공자로서 개발 공부를 하면서 느끼는거지만 디테일한 내용이나 검색으로 잘 찾아지지 않는 지식들과 새로운 지식들은 어떻게 습득해야할지 방법을 잘 모르겠어서 계속 헤메는 느낌이 있어 질문 드립니다!
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
트랜잭션이 없는 상태에서 조회
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]5:30초 에서 order.getOrderItems().stream()하는 부분에서 orderItem에 있던 Item들에 값이 들어가는것으로 알고있는데, 이는 @Transactional 이 있는 Service계층이 아니라 Repository계층에서 불렀기 때문에 프록시 객체가 들어간것이 맞나요? @Transactional 어노테이션이 없는 계층에서 em.find()나 createQuery()같은 메소드를 호출해도 되는지와 왜 트랙잭션이 없을때 item에 대한 값을 얻을수있는지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Controller가Repository에 의존해도 되나요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Contoller에서 Service를 의존하는게 아니라 Repository에 의존해도 되나요?? 예제라서 단순화 한건지 아니면 다른 프로젝트에서도 동일하게 Controller에서 Repository로 접근해도 되는지 궁금합니다. 이전에 비슷한 질문을 본것같은데 답변을 못찾아서 질문 남깁니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
초기설정에서 궁금한점이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빌드,실행,배포->Gradle에서 Gradle을 intelliJ IDEA로 바꾸었습니다. 근데 원래 Gradle에서는 중단 실행 버튼(HelloSpringApplication.java)만 누르면 코드를 바꾼대로 웹브라우저가 업데이트가 되었었는데, intelliJ로 바꾼후에는 코드를 바꿔주어도 out이 업데이트 되어야만 웹브라우저가 업데이트 되는것으로 확인되었습니다. 하지만 out폴더에 있는 파일은 중단 실행 버튼(HelloSpringApplication.java)만으로 업데이트가 안되고 프로젝트 다시빌드를 해주어야만 업데이트가 되는데 왜이런지 알고싶습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Run 버튼이 활성화되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.자주하는 질문 링크도 모두 확인해보고 혼자 서치도 해봤지만 해결이 안되어 남깁니다. 혹시 인텔리제이 커뮤니티버전인게 문제인가 싶어 학생 라이선스로 울트라버전까지 다운받아봤지만 해결이 안됩니다. 스프링 관련 어노테이션도 전혀 인식하지 못하는 것처럼 보입니다. 런 버튼은 당연히 활성화가 안되고요우선 자바 버전은 아래와 같습니다.openjdk version "21" 2023-09-19 LTSOpenJDK Runtime Environment Temurin-21+35 (build 21+35-LTS)OpenJDK 64-Bit Server VM Temurin-21+35 (build 21+35-LTS, mixed mode, sharing) 자주하는 질문이나 검색을 통해 보면, build tool 내의 gradle을 설정하라는 것처럼 보이는데, 저에게는 gradle 선택지가 아예 존재하지 않습니다. 아래 사진처럼요. ./gradlew bootRun 을 터미널에 직접 쳐서 정상적으로 실행시키고 있었으나 너무 불편합니다. 혹시 해결방법이 보이신다면 도움 부탁드립니다.
-
해결됨자바 스프링 부트 프로젝트와 파이썬 AI 프로젝트 연결하기
WebSocket connection 오류 질문 있습니다.
안녕하세요~강의 잘 들었고 도움이 많이 되었습니다. 한가지 오류가 해결되지 않아서 질문 남깁니다.아래 오류가 발생하는데 원인을 잘 모르겠네요.(윈도우 환경에서 1개 pc에 파이썬, 자바스프링부트, mqtt 모두 실행하고 있음)혹시나 해서 방화벽 설정도 해봤어요~ <오류사항>웹브라우저 localhost:8080/ai로 접속하면, 브라우저에 "MQTT Client Example" 텍스트만 나오고카메라 화면이 안 나옴개발자도구 콘솔에서 아래 오류가 발생함.WebSocket connection to 'ws://localhost:9001/' failed:Disconnected from broker <확인 사항>1. mosquitto.conf 설정 확인# Config file for mosquitto# MQTT 기본 리스너 설정listener 1883protocol mqtt# WebSocket 리스너 설정listener 9001protocol websocketsallow_anonymous true 2. 실행 순서1) mosquitto.exe 실행2) python camera.py 실행 ( 윈도우 화면에서 카메라 내용 정상적으로 나오고 object detect가 잘 됨)3) 스프링부트 프로젝트 실행후 웹브라우저 접속(http://localhost:8080/ai)
-
미해결코틀린으로 만드는 스프링부트
인텔리제이의 run 버튼이 활성화되지 않습니다.
계속 같은 문제가 발생하여 결국 터미널에 ./gradlew bootRun 을 입력하는 것으로 대체했는데, 왜 활성화되지 않는지 궁금합니다.