안녕하세요. 김영한 강사님의 자바 입문강의, 기본강의까지 들은 후 스프링 입문 강의를 듣게 된 학생입니다. 다름이 아니라 처음 프로젝트를 생성할때부터 이해가 어려워서 질문드립니다. controller라던지, resolver같은 처음 듣는 용어들이 나오고, 용어가 생소하니 매우 간단한 동작환경그림조차 이해가 어렵습니다. 혹시 이 강의를 듣기전에 미리 알아야하는 기초적인 배경지식이 있을까요? 자바입문과, 자바기본강의는 제공해주신 파일만으로 공부해도 입문자인 저도 충분히 이해가 가능하게 기본부터 설명이 되어있었는데, 스프링 입문강의는 처음보는 개념이나 용어들이 부가적인 설명없이 전개되어 강의파일만으로는 이해가 불가능해서 질문드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 관련내용의 질문들이 있으나, 제 케이스는 다른 것 같아서 질문 올립니다. 아래와 같이 작성하였으나, 적용이 되지 않습니다. jpa: hibernate: ddl-auto: create properties: hibernate: default_batch_fetch_size: 100 위치를 옮겨봤는데요, properties.default_batch_fetch_size 위치에서 적용이 되는 것으로 보입니다. 다만, 실제 실행해보면 적용되지 않습니다.
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오) [질문 내용] Lazy 강제 초기화 시, order.getMember().getName() 는 @GetMapping("/api/v1/orders") public List<Order> listV1() { List<Order> orders = orderRepository.findAll(new OrderSearch()); for (Order order : orders) { order.getMember().getName(); ... } return orders; } 다음과 같은 결과를 기대합니다. { "id": 1, "member":{ "name": "memberA", }, ... } 하지만 order.getMember() 까지만 초기화 되어, 다음과 같은 결과가 나옵니다. { "id": 1, "member":{ "id": 1, "name": "memberA", "address":{ "city": "주소", "street": "거리", "zipcode": "우편번호" } }, ... } Intelij 에서도 'Member. getName()'의 결과가 무시되었습니다 라고 에러가 뜨는데 그 이유가 궁금합니다.
게이트웨이 서버 로그를 확인하던 중에 문득 이러한 생각이 들었습니다. 만약 이 프로젝트가 유저가 굉장히 많은 서비스라면 게이트웨이 자체에 부하가 생길 수 있을 것 같습니다. 요청의 수가 굉장히 많아 질 것 같은데, 이러한 경우에 부하분산을 어떻게 해야할까? 게이트웨이 하나에 모든 요청(각 서비스, 모니터링등등)이 많아지면 게이트웨이 서버에 문제가 생기지 않을까? 라는 생각이 들었습니다. 스케일업, 스케일아웃 이전에 부하분산할 수 있는 방법을 혹시 제시해주실 수 있으실까요? 현업에서는 어떻게 처리하는지 궁급합니다. 또 게이트웨이 서버를 하나 더 띄웠을때 시스템이 더 복잡해질 것 같은데, 어떤 방법들을 사용하고 어떤 점들이 고려되는지도 궁금합니다.
JPA 기본편 강의 내용을 까먹어서 질문드립니다. MemberService의 update()에서 반환 타입을 void가 아닌 Member로 한 경우, controller에서 해당 Member를 반환받았을 때 이 Member는 영속성 컨텍스트가 관리하는 엔티티가 아닌건가요? 아니면 service와는 다른 영속성 컨텍스트에서 관리되는 엔티티인건가요?
MemberApiController의 saveMemberV2()에서 @Valid에 의해 검증 오류가 발생한 경우에도 오류에 대한 api를 내려줘야 하잖아요. 이때에도 오류가 없는 경우와 마찬가지로 CreateMemberResponse를 반환해야 하는 건가요? 검증 오류가 발생했을 때 api를 어떻게 전달해야하는지를 잘 모르겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] MemoryMemberRepository 클래스에는 생성자가 없는데 어떻게 스프링 컨테이너에 등록이 되는거죠? 그리고 MemberRepository의 구현체가 몇가지 더 있는 경우 MemberService의 생성자 파라미터에는 어떤 구현체가 들어가나요?
채팅 실서비스 환경 관련 문의 드립니다. 웹소켓은 커넥션을 유지하는데 서비스가 인기가 있어 동시접속자가 많아지면 커넥션 고갈이 생길 것 같습니다. 이런 문제를 방지하기 위해 실 운영 환경에서는 어떻게 모니터링하고 대응하는지 궁금합니다. 실 운영 환경에선 멀티 서버 멀티 인스턴스로 동작하게 해야 할 것 같은데 이런 경우에도 @SendTo 애노테이션을 활용할 수 있나요? 없을 것 같아 질문드립니다. 실 운영환경에선 엔진엑스같은 웹서버를 거쳐 들어올 것 같은데 이럴 때 주의해야할 사항이 있을까요?
저의 경우에는, Unable to load class 'org.gradle.api.plugins.MavenPlugin'. This is an unexpected error. Please file a bug containing the idea.log file. 오류의 이유와 gradlew build failed 빌드에 실패하는 이유가 동일했습니다. 해결 방법 아래 주소에 적어두었으니, 참고하세요 ! 💡 https://blog.naver.com/bkmij/223594375357 도움이 되었으면 좋겠습니다. 모두 남은 학습 열심히 화이팅하세요 : ) ! ☺ ☺ https://www.inflearn.com/community/questions/1333084/build-gradle-%EA%B4%80%EB%A0%A8-%EC%98%A4%EB%A5%98-unable-to-load-class-x27-org-gradle-api-plugins-mavenplugin?srsltid=AfmBOopJ4VA4YBT1JxsR3YjKEGdr1qYs0Y1QQgxTYQcBfdS2WYsBTeqa ↑댓글을 참고하여 해결하였습니다.
1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 값 타입의 클래스에 setter를 제공하지 않아도 변경 불가능하도록 할 수 있지만, 필드들에 final을 붙이는 것 또한 괜찮지 않을까요? 대신 기본생성자도 만들 기 위해서 @NoArgsConstructor 옵션을 사용 할 수 있을 것 같습니다. 최종 형태입니다 @Embeddable @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED, force = true) @RequiredArgsConstructor public class Address { private final String city; private final String street; private final String zipCode; } 이런식으로 만들어도 될까요? 또 force 옵션을 쓰게 되면 리플랙션/프록시 기술에 영향을 주어서 쓰면 안되는 형태일지 궁금합니다
안녕하세요. 강의 항상 잘 보고 있습니다. 아래 두 질문 보고 이해가 안 되는 부분이 있어 질문 드립니다. https://www.inflearn.com/community/questions/33719/fetch-join-vs-join https://www.inflearn.com/community/questions/1364411/%EB%8B%A8%EC%88%9C-%EC%A1%B0%EC%9D%B8%EA%B3%BC-%ED%8E%98%EC%B9%98-%EC%A1%B0%EC%9D%B8%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A7%88%EB%AC%B8-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 아래처럼 페치조인 사용하지 않고 member와 team을 select해서 가져올 경우에는 lazy 쿼리가 발생할 수 있다고 이해했습니다. @Query("select m, t from Member m join m.team t") List<Member> findInnerJoin(); team을 select하면 영속성 컨텍스트에도 team의 모든 pk가 저장되면서 lazy 쿼리가 발생하지 못하는 것은 아닌가요? 첫번째 링크 질문의 "이번 예제가 좀 특수한 경우고, 일반적으로 team이 영속성 컨텍스트에 미리 존재하는 경우는 드물기 때문에" 라는 답변에서 어떻게 team이 미리 존재하지 않는 경우가 생길 수 있는지 궁금합니다...
[질문 내용] saveItem에 @Transactional 어노테이션이 선언되어있고, updateItemForm의 Id 값을 hidden으로 설정 되어있는데 상품 수정시 기존 값이 그대로 유지되면서 화면에 보여집니다ㅠㅠ 뭐가 잘못된걸까요...? 관련 코드도 댓글로 첨부 하겠습니다.
안녕하세요! 강의 정말 잘 듣고 있습니다! 개인적인 플젝에서 야매?로 graphql 쓰고 있었는데 이렇게 강의를 통해 개념을 제대로 알아가는 중입니다 ㅎㅎ 강의에는 없지만 java-springboot에서 graphql을 통해서 이미지를 받을 수는 없는지 궁금합니다! 가능하시다면 관련된 라이브러리나 블로그? 알려주시면 감사하겠습니다!!
안녕하세요. 지식공유자님! 데이터베이스 연결 강의를 보고 질문 드립니다. 서비스를 command와 query로 분리하고 있는데요. 이것을 cqrs 패턴으로 부른다고 알고 있습니다. 이게 좋다고는 들었는데, 정확히 왜 그런지는 잘 모릅니다. 만약, 면접관이 "cqrs에 대해서 아느냐? 왜 이렇게 구현했느냐?" 라고 묻는다면, 지식공유자님께서는 어떻게 답변하시겠습니까? 감사합니다.
[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
예외처리의 부모격인 Exception.class 와 UserNotFoundException.class 2개 모두 제시된 상황으로 이해했습니다. 질문 : 요청에 의해 핸들러처리시 UserNotFoundException 클래스를 사용해야할 때 Exception.class를 거치고 UserNotFoundException.class가 사용되는 것인지 아니면 바로 UserNotFoundException 클래스로 가는지에 대한 의문이 생겨 문의드립니다!
두번째 방식이 CustomProvider에 의해 처리가 되는 것이 이해가 되지 않습니다. 첫번째 방식과 단지 CustomProvider를 추가한 것만 다르다고 생각하는데 이로 인해 해당 CustomProvider가 선택된것인가요? 아니면 Dao방식은 parent에 존제하기 때문에 현재 list에 존제하는 custom방식이 채택된거라고 이해하면 될까요?