30%
61,600원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
배치처리를 하려면 어떻게 해야하나요?
스프링이 제공하는 기능이 아니라 제가 직접해줘야하는건가요? 영속성 컨텍스트가 일정이상 차면 비워주는 작업을 어떻게 할 수 있을까요?코드가 나와있긴하지만 그 코드는 너무 로우 레벨아닌가요?? SPRING DATA JPA사용하면서 em을 직접적으로 사용하진 않잖아요..자동으로 해주는건가요...?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
프록시 벗기기가 언제 필요하나요?
어떤 상황에서 하이버네이트가 제공하는 프록시벗기기가 필요한가요?(프록시 객체에서 원본객체를 가져오는 메서드가 필요한 상황)
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
osiv관련 질문
osiv가 뷰에서도 지연로딩이 가능하게 하려고 도입한거잖아요 (뷰에서 필요한값들을 지연로딩으로 가져오려고)근데 지연로딩을 하면 결국 필요없는 쿼리가 추가로 나가게될텐데..애초에 필요한 데이터만 jpql사용해서 뽑아서 주면 문제가 해결되는거아닌가요? 왜osiv를 사용하는거죠?? 뷰와 리파지토리가 너무 연관되어서 그런가요..? 그게 그렇게 큰 단점인가요..?뭔가 osiv의 장점이 엄청많아보이는데 제가 다른 분들 프로젝트를 봤을때는 osiv를 거의 적용안했던것같거든요... 왜 잘 안쓰이는걸까요...
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
osiv OFF했을 때 ordersV1 실행시 질문 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용] @GetMapping("/api/v1/orders") public List<Order> ordersV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); order.getDelivery().getAddress(); List<OrderItem> orderItems = order.getOrderItems(); orderItems.stream().forEach(o -> o.getItem().getName()); } return all; }OSIV를 껏을 경우에 order.getMember().getName()에서 에러가 뜨는게 맞다고하셨습니다. 그런데 ordersv1 사용시에 findAllByString을 사용하면서 트랜잭션을 애초에 사용하지 않았는데 어느 타이밍에 트랜잭션이 켜지고 꺼지면서 커넥션이 사라지는지 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Result 클래스로 dto를 감싸는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. Result 클래스로 dto를 감싸는 이유는 무엇인가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Spring JPA Order by nullsHandling 지원 여부
데이터에 빈값과 null값이 있다고 할 때, order by column asc : 빈 값 우선 , null 값 맨 뒤order by column desc : null 값 우선, 빈 값 맨 뒤와 같이 정렬이 되는데빈 값과 null 값을 같은 위치에 정렬하고 싶어서 아래와 같이 코드를 짜서 구현을 했는데List<Order> orderList= new ArrayList<>(); //... 생략 if(StringUtils.equals(SORT_DESC, direction)) { orderList.add(new Order(Direction.fromString(direction), column).nullsLast()); } else { orderList.add(new Order(Direction.fromString(direction), column).nullsFirst()); } // ... Sort.by(orderList); Sort 객체에는 NULLS_LAST나 NULLS_FIRST 세팅이 잘 되는데jpa 쿼리로그에는 그냥 column에 대한 정렬밖에 없더라구요 좀 찾아보니, jpa 에서 nullHandling을 지원하지 않는다는 것도 같은데,https://github.com/spring-projects/spring-data-jpa/issues/1280이런 경우 대체할 수 있는 방법이 뭐가 있을까요? ㅠ
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
ordersV4에서 에러가 발생하는데 무슨 문제인지 잘 모르겠습니다. (아직 정확한 원인을 모르겠습니다. 알려주세요~~)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]환경spring boot : 3.0.6java : 17코드https://github.com/pdh9311/jpashop 세번째 커밋에 에러가 발생합니다.org.hibernate.query.SemanticException: query specified join fetching, but the owner of the fetched association was not present in the select list [SqmSingularJoin(study.jpashop.domain.Order(o).member(m) : member)]이런 에러가 발생합니다.약간 클래스이름만 다르지 거의 강의 내용과 같게 한거 같은데 안되네요.. 예전에 할땐 된거 같은데. 무슨 문제일까요?
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
강의 5:00~
아직 기본기가 완벽하지 않아서 헷갈리는 부분이 있습니다. 선생님께서 order.getOrderItems()할때 엔티티니까 조회가 안된다. 라고 하셨습니다. 이해가 안되서 생각해봤는데 Entity OrderItem이 지연로딩에 해당되서 stream으로 값을 불려와야한다 라고 이해하면 될까요??public OrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getDelivery().getAddress(); orderItems = order.getOrderItems().stream() .map(orderItem -> new OrderItemDto(orderItem)) .collect(toList()); }
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
분산 데이터베이스 환경에서도 cqs패턴을 사용할 수 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]커맨드와 쿼리를 분리한다고 하셨는데,분산 데이터베이스 환경에서 update 쿼리에서 반환값을 가져오지 않고 다시 findOne을 수행한다고 가정했을때 전파가 아직 이루어지지 않아서 조회가 안되는 경우가 발생할 수도 있을까요?이전에 물리적으로 분산 데이터베이스 환경에서 update되는 데이터가 많아서 find로 값을 불러오지 못한 경우가 있어서무조건 update 쿼리를 보낼때 반환값을 받아서 처리했던 기억이 있어서 질문 드립니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
List로 만든 뒤 Map으로 변환시 메모리 사용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.V5를 만들면서 List를 만든 뒤에 이것을 다시 Map으로 변환하셨는데 이럴 경우 메모리 사용량이 많아져 OOM이 발생하기 쉬울 수 있다고 생각했습니다. 제가 생각한게 맞을까요?만약 맞다면 em에서 받아올때부터 stream으로 받아서 map으로 만들면 이러한 문제가 해결될까요?
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
9:56 경 "JSON의 루트는 배열로 해서는 안된다." 에 대한 질문
안녕하세요! JSON과 배열에 대해 질문드립니다!9:56 경에, 영한님께서 "JSON의 루트는 배열로 해서는 안된다."라고 언급해주셨습니다. 이것은 혹시, 클라이언트 쪽에서 해당 배열에 접근할 수 있는 방법이 없어서이기 때문일까요..?확인해주셔서 감사드립니다!
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
왜 DTO 만드실때 static 을 붙인 건가요??
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]항상 DTO 만드실때 static 클래스 꼭 붙이시길래 한번 빼고 만들면 오류가 나는 건가? 싶어서 뺴봤는데 상관이 없더라고용. 혹시 static 을 굳이 붙이신 이유가 있나요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
fetch join 과 EAGER
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]제가 이해한게 맞을까요?일단 기본적으로 type을 LAZY 로 하는 이유는 조회할때 한 방에 다른 엔티티까지 쿼리가 나가고 그거에 연관된 엔티티까지 쿼리가 나가면 비효율 적이다. 그래서 LAZY 를 쓰는데 조회할때 다른 Entity 의 값도 가져오려면 LAZY 타입이니 쿼리가 많이 나가서 fetch JOIN 으로 한 쿼리로 연결 시킨다. 그러면 EAGER 바꾸면 될 것같지만, EAGER 는 예측할 수 없는 문제도 있고, 다른곳에서 조회할때는 또 다른 엔티티의 값이 필요가 없을 수도 있기 때문에 기본은 LAZY로 해두고 다른 엔티티의 값이 필요한 특수한 경우에만 fetch JOIN 을 한다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
포스트맨 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용의 코드도 모두 동일한데, 포스트맨을 통한 url 요청에서 다음과 같이 오류가 발생합니다.그러다가 'http://' 를 생략하고 다시 요청했는데 이번엔 정상적으로 동작했습니다.이처럼 http:// 를 생략하니까 정상 작동하는 이유에 대해서 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
11분 쯤에 프록시 관련하여 질문입니다.
지연 로딩을 사용하면 그 객체를 사용할 때 프록시 객체에서 영속성 컨텍스트에 연결을 요청해서 진짜 객체를 가져오는 거로 알고 있는데요이번에는 단순히 Order만 Return 했기 때문에 Order객체 안에 있는 프록시 객체(Member, Delivery, OrderItems)는 사용할 일이 없는 것 아닌가요 ?왜 프록시 객체를 사용하려다 문제가 발생했는지 알 수 있을까요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
distinct 사용 전 데이터 뻥튀기 현상이 일어나지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강사님과 코드를 똑같이 작성했는데 distinct를 사용하기 전에도 데이터 뻥튀기 없이 올바르게 데이터가 나옵니다. 제가 어떤 부분을 잘못한 건지 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
8:41 질문
@PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2( @PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id, request.getName()); return new UpdateMemberResponse(id, request.getName()); } 파라미터로 들어온 값으로 UpdateMemberResponse를 만들어주지 않고 memberService.findOne을 통해 하는 이유가 있을까요?
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
변경감지를 통한 데이터 변경에 대해서
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 김영한님 JPA강의를 모두 듣고 개인프로젝트를 하던 중에 궁금한 점이 생겨서 질문 올리게 되었습니다.김영한님께서 데이터의 업데이트는 변경감지를 통해서 하는 것이 좋다고 말씀하셨던 게 기억이 나는데요. 물론 변경감지만을 이용하라는 말씀은 아니시겠지만 변경감지를 통한 업데이트를 어디까지 사용해야 하는 가에 대해서 좀 의문이 생겼습니다.예를 들어 이런 경우입니다.회원이 게시판을 조회하면 조회수를 조회수를 증가시키는 로직인데요. (조회수 증가와 게시판 조회를 서로 다른 트랜잭션으로 했음)이럴 때에 변경감지를 통해서 조회수를 증가시킬 경우에 변경감지를 통해 변경된 값이 그대로 update되는 형태를 취하는 것인데, 이럴 경우 요청이 한 번에 많이 들오면 update순서가 보장되지 않아 정확한 조회수 증가가 이뤄지지 않을 것 같았습니다. 하지만 그렇다고 LOCK을 걸자니 조회수 하나 때문에 게시판 조회까지 LOCK이 걸려 조회 속도를 낮추는 것도 문제인 듯 하였습니다. 생각해 보면 이러한 조회수 증가는 쿼리를 UPDATE .. SET column = column +1 이런 식으로 만들고 처리하면 현재 컬럼의 값을 기준으로 1씩 증가하기 때문에 LOCK을 걸 필요도 없고 순서에 상관없이 일관된 값이 보장될 것 같은데 변경감지를 통해 값을 업데이트 하는 방식을 사용하면 현재 조회된 Entity의 조회수 값에 1을 추가하고 그 값으로 직접 UPDATE되는 형태라서 문제가 된 것이 아닐까 싶었습니다.이런 경우 UPDATE쿼리를 따로 날려 주는 방식이 더 효율적인 방식이 맞을까요? 실무에서는 어떤 방식을 취하고 있는 지 궁금합니다..!
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OrderRepository를 JpaRepository를 사용하여 작성하고 싶습니다.
MemberReposiotry처럼 OrderRepository도 JpaRepository를 사용하여 변경해봤습니다.근데 여기서 기존의 검색 기능을 담당하던 findAllByString의 메서드를 구현함에 있어서 오류가 발생하여 질문드립니다.기존과 같이 OrderSearch를 이용하여 작성하고 싶어서 findALlByMemberName으로 OrderSearch의 필드인 MemberName을 가져오고 싶었으나 타입 불일치로 오류가 발생합니다.기존의 Service와 Controller의 변경 없이 Repository만으로 해결하고 싶은데 어떻게 작성해야 할까요?findAllByString은 동적쿼리라서 JpaRepsitory의 기능으로 해결하기엔 한계가 있나요?
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
영속성 컨텍스트와 트랜잭션 질문 드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의 후반부에 최악이 아닌 경우(한 명의 회원이 2개의 Order를 가질때) 영속성 컨텍스트에 멤버가 있기 때문에 멤버조회 쿼리가 1번 덜 나간다고 설명해주셨는데요. 같은 트랜잭션이어야 동일한 영속성 컨텍스트를 바라보기 때문에 강의에서 설명한 내용이 들어맞을 거라 생각하는데요. 강의에서는 트랜잭션을 설정해주는 부분이 안보여서요. 혹시 트랜잭션을 따로 설정하지 않으면 같은 리퀘스트 스코프 내에서는 동일 트랜잭션을 보장하는 기본설정??같은게 있는건가요? 아니면 혹시 제가 놓친 부분이 있을까요?