inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

결과 쿼리 개수가 맞지 않아서 문의 드립니다.

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] [간단한 주문 조회 V3: 엔티티를 DTO로 변환 -패치 조인 최적화] 강의에서 5분 50초 쯤에 v2를 돌려봤을 때, 강사님은 쿼리가 5번 나오는데, 저는 계속 7번이 나오더라구요... order가 처음에 주문 2개를 만들어서 이미 영속성 상태라 그 다음에는 1차 캐시에서 가져오는 것으로 보여 쿼리는 생성이 안되어야 한다고 생각이 드는데, 왜 계속 order 쿼리가 2번 더 나오는 걸까요...? [Query] 2023-10-25T21:54:33.448+09:00 DEBUG 37176 --- [nio-8080-exec-3] org.hibernate.SQL : select o1_0.order_id, o1_0.deliver_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id fetch first ? rows only 2023-10-25T21:54:33.449+09:00 INFO 37176 --- [nio-8080-exec-3] p6spy : #1698238473449 | took 0ms | statement | connection 11| url jdbc:h2:tcp://localhost/~/jpashop2 select o1_0.order_id,o1_0.deliver_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id fetch first ? rows only select o1_0.order_id,o1_0.deliver_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id fetch first 1000 rows only; 2023-10-25T21:54:33.450+09:00 DEBUG 37176 --- [nio-8080-exec-3] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.member_id=? 2023-10-25T21:54:33.451+09:00 INFO 37176 --- [nio-8080-exec-3] p6spy : #1698238473451 | took 0ms | statement | connection 11| url jdbc:h2:tcp://localhost/~/jpashop2 select m1_0.member_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name from member m1_0 where m1_0.member_id=? select m1_0.member_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name from member m1_0 where m1_0.member_id=1; 2023-10-25T21:54:33.451+09:00 DEBUG 37176 --- [nio-8080-exec-3] org.hibernate.SQL : select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2023-10-25T21:54:33.451+09:00 INFO 37176 --- [nio-8080-exec-3] p6spy : #1698238473451 | took 0ms | statement | connection 11| url jdbc:h2:tcp://localhost/~/jpashop2 select d1_0.delivery_id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status from delivery d1_0 where d1_0.delivery_id=? select d1_0.delivery_id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status from delivery d1_0 where d1_0.delivery_id=1; 2023-10-25T21:54:33.452+09:00 DEBUG 37176 --- [nio-8080-exec-3] org.hibernate.SQL : select o1_0.order_id, o1_0.deliver_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.deliver_id=? 2023-10-25T21:54:33.452+09:00 INFO 37176 --- [nio-8080-exec-3] p6spy : #1698238473452 | took 0ms | statement | connection 11| url jdbc:h2:tcp://localhost/~/jpashop2 select o1_0.order_id,o1_0.deliver_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.deliver_id=? select o1_0.order_id,o1_0.deliver_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.deliver_id=1; 2023-10-25T21:54:33.453+09:00 DEBUG 37176 --- [nio-8080-exec-3] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.member_id=? 2023-10-25T21:54:33.453+09:00 INFO 37176 --- [nio-8080-exec-3] p6spy : #1698238473453 | took 0ms | statement | connection 11| url jdbc:h2:tcp://localhost/~/jpashop2 select m1_0.member_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name from member m1_0 where m1_0.member_id=? select m1_0.member_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name from member m1_0 where m1_0.member_id=2; 2023-10-25T21:54:33.453+09:00 DEBUG 37176 --- [nio-8080-exec-3] org.hibernate.SQL : select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2023-10-25T21:54:33.454+09:00 INFO 37176 --- [nio-8080-exec-3] p6spy : #1698238473454 | took 0ms | statement | connection 11| url jdbc:h2:tcp://localhost/~/jpashop2 select d1_0.delivery_id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status from delivery d1_0 where d1_0.delivery_id=? select d1_0.delivery_id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status from delivery d1_0 where d1_0.delivery_id=2; 2023-10-25T21:54:33.454+09:00 DEBUG 37176 --- [nio-8080-exec-3] org.hibernate.SQL : select o1_0.order_id, o1_0.deliver_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.deliver_id=? 2023-10-25T21:54:33.454+09:00 INFO 37176 --- [nio-8080-exec-3] p6spy : #1698238473454 | took 0ms | statement | connection 11| url jdbc:h2:tcp://localhost/~/jpashop2 select o1_0.order_id,o1_0.deliver_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.deliver_id=? select o1_0.order_id,o1_0.deliver_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.deliver_id=2; [OrderSimpleApiController] package jpabook.jpashop2.api; import jpabook.jpashop2.Repository.OrderRepository; import jpabook.jpashop2.Repository.OrderSearch; import jpabook.jpashop2.domain.Address; import jpabook.jpashop2.domain.Order; import jpabook.jpashop2.domain.OrderStatus; import lomb ok.Data; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; import java.util .List; import ja va.util.stream.Collectors; /** * X To One (컬렉션 X) * Order * Order -> Member * Order -> Delivery */ @RestController @RequiredArgsConstructor public class OrderSimpleApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/simple-orders") public List<Order> ordersV1(){ List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); // Lazy 강제 초기화 order.getDelivery().getAddress(); // Lazy 강제 초기화 } return all; } @GetMapping("/api/v2/simple-orders") public List<SimpleOrderDto> ordersV2(){ // Order 2개 List<Order> orders = orderRepository.findAllByString(new Order Search()); List<SimpleOrderDto> result = orders.stream() .map(o -> new SimpleOrderDto(o)) // map : a -> b로 치환 .collect(Collectors. toList ()); return result; } @GetMapping("/api/v3/simple-orders") public List<SimpleOrderDto> ordersV3() { List<Order> orders = orderRepository.findAll WithMemberDel ivery(); List<SimpleOrderDto> result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(Collectors. toList ()); return result; } @Data static class SimpleOrderDto{ // API 명세서 private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; public SimpleOrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getDelivery().getAddress(); } } } [OrderRepository] ... public List<Order> findAllWithMemberDelivery() { return em.createQuery("select o from Order o" + " join fetch o.member m" + " join fet ch o.deliv ery d", Order.class) .getResultList(); }

  • java
  • spring
  • spring-boot
  • jpa
rr8602 댓글 2 좋아요 0 조회수 654

shift tab 으로 도움말이 안나타납니다 ㅜ

미해결

공공데이터로 파이썬 데이터 분석 시작하기

안녕하세요 shift tab 으로 도움말이 안나타납니다. 아래 답변주신 내용중에 ? 후 코드 실행후 다시 해보면 될거라는 답변을 해주셔서 그대로 해봤는데도 되지 않습니다. 혹시 다른 방법이 있을까요?

  • python
  • pandas
  • numpy
donghyun6.kim 댓글 2 좋아요 0 조회수 988

스프링 사용 중 생기는 오류

미해결

안녕하세요 spring tools4를 설치하였고 돌아가는지 확인하고 싶어 확인하는 도중에 오류가 걸려서 글 올립니다. java는 11로 사용하였고 demo1는 local로 실행했을 때 Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/SpringApplication has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0 오류가 떠서 java버전이 다르다는 것을 알기는 알아냈지만 인터넷으로 검색한 방법을 다 써봐도 해결이 안됐습니다. 사용한 방법은 build path에서 jre system library로 해보았고 installed jres도 제대로 해두었습니다. compiler에도 11로 표시하였는데 혹시 다른 추가적이 방법이 있을까요

  • spring
  • java
  • springboot
박수현 댓글 1 좋아요 0 조회수 888

내용정리 화면은 어디서 볼수있나요?

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

화면에서 보여주시는 내용정리된 노트?는 어디서 볼수있나요?

  • java
  • spring
  • mvc
  • spring-boot
박예슬 댓글 0 좋아요 0 조회수 737

h2 버그인가요?

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 저는 ddl auto를 create로 하고 시퀀스 전략 했을 때, persist 안하고 봐도 시퀀스가 그냥 1, 증가가 50입니다.. 그 다음 persist를 한번 해 봤더니, next value for member_seq를 한번만 호출했습니다. 근데 persist 2번 이상하면, next value for member_seq를 2번 호출합니다. 시퀀스의 현재값도 101번이 됩니다. 뭔가 JPA쪽에서 놓친건가요..? 아니면 제가 뭔가 강의에서 놓친건가요? 그렇게 현재값 101번 만든 후, 이번엔 dll.auto 를 none으로 해서 다시 돌려봤더니 다서 persist 해서 테이블에 저장해서 나온 건 52부터 찍힙니다. persist 안한 것 persist 1번 next value for member_seq 한번 호출 persist 2번 호출 next value for member_seq가 두번 호출 됍니다. 그런데.. 이 상태에서 ddl.auto 를 none으로 하고 다시 한번 로직을 실행해 봤더니.. 어.. 제 생각이 맞다면 101부터 id가 매겨져야 할 것 같은데.. 어.. public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Member member1 = new Member(); member1.setUsername("A"); Member member2 = new Member(); member2.setUsername("B"); Member member3 = new Member(); member3.setUsername("C"); em.persist(member1); em.persist(member2); // em.persist(member3); tx.commit(); } catch (Exception e){ tx.rollback(); } finally { em.close(); } emf.close(); } 사용 버전 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jpa-basic</groupId> <artifactId>ex-hello-jpa</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-core</artifactId> <version>6.2.9.Final</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>2.1.214</version> </dependency> </dependencies> </project>

  • java
  • jpa
궁금이 댓글 3 좋아요 1 조회수 966

5번챕터 판다스프로파일링 업데이트 관련

미해결

공공데이터로 파이썬 데이터 분석 시작하기

안녕하세요 챕터5 도시공원관련 강의 학습중인데요 판다스 프로파일링 설치 및 폰트 변경완료 하였는데 하기와 같은 에러가 계속 발생하고 있습니다. 강의 내용대로 동일하게 하였는데 전혀다른 내용의 에러가 발생하여 이부분 문의드립니다. -- 에러내용 PydanticImportError: `BaseSettings` has been moved to the `pydantic-settings` package. See https://docs.pydantic.dev/2.4/migration/#basesettings-has-moved-to-pydantic-settings for more details. For further information visit https://errors.pydantic.dev/2.4/u/import-error 확인부탁드립니다.

  • python
  • pandas
  • numpy
badboy91 댓글 1 좋아요 0 조회수 544

dtype={"itemcode": np.object}) 을 dtype={"itemcode": object}) 으로 변경해야 하나요?

미해결

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기

예전에 잘 들었다가 최근에 다시 들으면서 실행하니, numpy dtype관련사항이 변경(업데이트)가 있었는지 numpy 1.20이후 변경되었다고 알람,오류메세지가 발생합니다. np.object 부분에서 np. 을 빼고 실행하면 되는데 이렇게 진행하면 될까요? 본 섹션 이외에도 np.object를 string으로 입력받기 위해 사용된 곳이 몇몇 보이는데 해당부분도 동일하게 object(찾아보니 python default type 같습니다만, 정확히 알지 못하겠습니다.) 로 변경해서 사용하면 크게 문제가 없을까요? 시간이 지났지만 자세하고 하나씩 설명해 주셔서 감사합니다.

  • python
  • pandas
  • numpy
  • 웹-크롤링
  • seaborn
  • plotly
  • matplotlib
  • 웹-스크래핑
브루브루 댓글 1 좋아요 0 조회수 644

선생님 (!morning) 부분 질문이 있습니다!

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

boolean morningCoffee= false if(!morningCoffee){ sout(아이스아메리카노 +!) } sout(주문완료) 논리부정연산자로 !morningCoffee == true 가 되는데 morningCoffee가 false가 맞을때 라고 이해해도 될까요? 헷갈려서 질문남깁니다~!

  • java
가진빵다내놔 댓글 1 좋아요 0 조회수 247

쿠폰 발급을 api로 제공할 경우, client에서 쿠폰 발급 여부를 확인할 수 있는 방법 문의드립니다.

미해결

실습으로 배우는 선착순 이벤트 시스템

안녕하세요. 강의 잘 들었습니다. 강의 들으면서 궁금증이 생겼는데, 만약에 쿠폰 발급 기능을 API로 제공한다고 가정하면 client -> 쿠폰 발급 기능 API 호출이 이루어지고 쿠폰 발급 기능 API에서는 쿠폰 발급 여부를 확인하고 kafka로 produce하게 되는데, 이때는 실제로 쿠폰이 발급된 상태는 아닐 수도 있을 것으로 예상됩니다(실제 쿠폰이 발급되는 시점은 consumer에서 작업이 정상적으로 완료되어야하므로 트래픽이 많거나 하는 경우 시간차이가 더 심할 것으로 예상됩니다) 이러면 쿠폰 발급 기능 API에서 응답값은 어떤 값을 줘야할까요? 쿠폰 발급 여부에서 발급이 가능하다면 쿠폰 발급되는것은 확정이기 때문에 발급되었다는 정보? 쿠폰 발급 여부에서 발급이 가능하지만 추가적으로 polling해서 client 쪽에서 확인하도록 처리? 제가 생각했을땐 위의 2가지정도로 가능할 것 같은데 강사님 의견이 궁금합니다..! 감사합니다.

  • java
  • docker
  • spring-boot
  • kafka
  • redis
예예 댓글 2 좋아요 1 조회수 631

실무에서 @DynamicInsert, @DynamicUpdate 사용하나요?

미해결

실전! 스프링 데이터 JPA

안녕하세요! 좋은 강의 잘 들었습니다! 실무에서 JPA를 사용하면서 궁금한점이 있어서요 실무에서는 @DynamicInsert, @DynamicUpdate 사용하고 있는데 영한님은 한번도 안쓰시더라구요..! 실무에서는 어떻게 사용하시는지 궁금합니다! @DynamicInsert, @DynamicUpdate 사용하지 않으면 어떻게 사용하는지도 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
ILoveBackEnd 댓글 2 좋아요 0 조회수 3631

페치 조인 질문있습니다!

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] 컬렉션의 필요성에 대해 질문 좀 드리겠습니다 - 인프런 | 질문 & 답변 (inflearn.com) 여기서 궁금한 내용있습니다!. 1)"생각하신 내용이 맞습니다. 중간 테이블을 중심으로 조회가 가능하다면 크게 문제가 없습니다. 하지만 때때로 중간 테이블을 중심으로 조회하기 어려운 경우들도 있습니다." 김영한 강사님의 답변 내용 중에 떄떄로 중간 테이블을 중심으로 조회하기 어려운 경우가 어떤 경우인지 구체적으로 알려주실수 있나요?? 일단 다대다=>중간테이블 필요=>성능 최적화 필요하면=>중간테이블에 해당하는 리포지토리 생성후 (Spring data JPA에서) @Query(fetch join)사용하는식으로=> 맨날 이런식으로 했었는데 중간 테이블 중심으로 조회하기 어려운 경우가 어떤 경우인지 궁금합니다. 2)BatchSize를 사용하는 경우 일대다의 일의 collection에 해당하는 다( members) 를 일의 BatchSize에 해당하는만큼 가지고 오지 않습니까? for (Team team : teams) { System.out.println("team:"+team.getName()); for(Member mem:team.getMembers()){ System.out.println(mem.getUsername()); } } 여기서는 성능 최적화가 이해가 됩니다!. team이 붙어있으므로 배치 사이즈만큼만은 mem.getUsername()이 호출되어도 또 그때동안은 쿼리가 안나가니깐요. 근데 궁금한게 IN 쿼리에 들어가는게 BatchSIze만큼의 TeamID인데 연속한 ID만큼 나가는 걸로 알고 있는데 위처럼 연속한 경우는 몰라도, Team을 이것저것 조회하고 그에 대한 member의 메서드를 호출하면 이게 성능상 좋은가요?

  • java
  • jpa
dionisos198 댓글 2 좋아요 1 조회수 582

h2 버전

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] start.spring.io 에서 spring boot를 설치하고 h2 버전도 1.4.199로 설치하였습니다. 그러나 아래의 사진과 같이 라이브러리 내에 h2:1.4.199가 아닌 h2:2.1.214가 설치되어 있습니다. 이 부분 때문에 다음 강의에서 제대로 실행이 되지 않는 것 같습니다 .. (MEMBER 테이블 생성이 되지 않음) 왜 이러는 걸까요 ..? 해결 방법도 알려주시면 감사하겠습니다 ㅜ ㅜ

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
kyer 댓글 3 좋아요 0 조회수 533

MEMBER 테이블 생성이 안 됩니다.

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 강의를 듣고 강의자료까지 참고하며 코드를 작성하였습니다. 그러나 실행창에 create와 drop이 뜨지도 않고 MEMBER 테이블 또한 생성되지 않습니다. 관련 질의를 지금 6시간 넘게 다 찾아보며 (띄어쓰기, @Rollback(false) 추가 등) 해결 시도를 했지만 끝까지 되지 않아 질문 남깁니다 .. [yml 코드] 감사합니다 ..

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
kyer 댓글 2 좋아요 1 조회수 569

상가상권정보 파일 부재

미해결

공공데이터로 파이썬 데이터 분석 시작하기

안녕하세요 상가정보데이터셋 처음부분 보고 있는데 공유된 링크에서 다운받으려고 보니 데이터셋이 "_01.csv"밖에 없습니다. (영상에는 4개의 파일이 있어야함) 공공데이터포털로 직접 들어가서 찾아보니 2019년 12월 데이터가 보이지 않아 문의드립니다.

  • python
  • pandas
  • numpy
badboy91 댓글 1 좋아요 0 조회수 261

1:1 연관관계

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

1:1 연관관계인 두 엔티티가 존재할 경우, 사실 1개의 테이블로 관리할 수 있고, 2개의 테이블 분리해서 관리할 수 있는데, 두 엔티티를 분리하는게 더 나을 것 같아서 2개의 엔티티로 분리하는 걸까요?

  • java
  • jpa
백린이 댓글 1 좋아요 0 조회수 532

JPQL DB 바로 조회

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

JPQL를 데이터를 조회하면, DB에 먼저 조회한 후, 영속성 컨텍스트에 이미 동일한 엔티티가 있으면, DB에서 조회한 데이터를 버리고, 이미 있는 엔티티를 반환한다고 알고 있습니다. 만약, 기존 엔티티를 새로 검색한 엔티티로 대체한다면, 영속성 컨텍스트에 수정 중인 데이터가 사라질 수 있어, 위험하다고 하는데, 그러면, 조회시 수정 중인 데이터가 조회되어서, 의도치 않는 데이터가 조회될 수 있지 않나요? 오히려 수정 중인 데이터 대신 새로 조회한 데이터로 대체하는게 좋지 않을까 싶은데, 혹시, DB에서 조회한 데이터를 버리고, 이미 있는 엔티티를 반환하는게 더 장점인 구체적인 예시가 있을까요?

  • java
  • jpa
백린이 댓글 2 좋아요 0 조회수 428

31:04 부분 "select o from Order o" 만 했을 경우 결과값

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

2023-10-09T19:14:55.542+09:00 INFO 2455 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-10-09T19:14:55.542+09:00 INFO 2455 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-10-09T19:14:55.542+09:00 INFO 2455 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms 2023-10-09T19:14:55.660+09:00 DEBUG 2455 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 offset ? rows fetch first ? rows only 2023-10-09T19:14:55.662+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495662 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 offset ? rows fetch first ? rows only select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 offset 0 rows fetch first 100 rows only; 2023-10-09T19:14:55.668+09:00 DEBUG 2455 --- [nio-8080-exec-1] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where array_contains(?,m1_0.member_id) 2023-10-09T19:14:55.672+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495672 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select m1_0.member_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name from member m1_0 where array_contains(?,m1_0.member_id) select m1_0.member_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name from member m1_0 where array_contains('ar0: ARRAY [CAST(1 AS BIGINT), CAST(2 AS BIGINT)]',m1_0.member_id); 2023-10-09T19:14:55.674+09:00 DEBUG 2455 --- [nio-8080-exec-1] org.hibernate.SQL : select d1_0.id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where array_contains(?,d1_0.id) 2023-10-09T19:14:55.674+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495674 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select d1_0.id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status from delivery d1_0 where array_contains(?,d1_0.id) select d1_0.id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status from delivery d1_0 where array_contains('ar1: ARRAY [CAST(1 AS BIGINT), CAST(2 AS BIGINT)]',d1_0.id); 2023-10-09T19:14:55.676+09:00 DEBUG 2455 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 2023-10-09T19:14:55.677+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495677 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.delivery_id=? select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.delivery_id=1; 2023-10-09T19:14:55.677+09:00 DEBUG 2455 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 2023-10-09T19:14:55.678+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495678 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.delivery_id=? select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.delivery_id=2; 2023-10-09T19:14:55.680+09:00 DEBUG 2455 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.order_item_id, o1_0.count, o1_0.item_id, o1_0.order_price from order_item o1_0 where array_contains(?,o1_0.order_id) 2023-10-09T19:14:55.686+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495686 | took 5ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select o1_0.order_id,o1_0.order_item_id,o1_0.count,o1_0.item_id,o1_0.order_price from order_item o1_0 where array_contains(?,o1_0.order_id) select o1_0.order_id,o1_0.order_item_id,o1_0.count,o1_0.item_id,o1_0.order_price from order_item o1_0 where array_contains('ar2: ARRAY [CAST(1 AS BIGINT), CAST(2 AS BIGINT), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL]',o1_0.order_id); 2023-10-09T19:14:55.687+09:00 DEBUG 2455 --- [nio-8080-exec-1] org.hibernate.SQL : select i1_0.item_id, i1_0.dtype, i1_0.name, i1_0.price, i1_0.stock_quantity, i1_0.artist, i1_0.etc, i1_0.author, i1_0.isbn, i1_0.actor, i1_0.director from item i1_0 where array_contains(?,i1_0.item_id) 2023-10-09T19:14:55.688+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495688 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select i1_0.item_id,i1_0.dtype,i1_0.name,i1_0.price,i1_0.stock_quantity,i1_0.artist,i1_0.etc,i1_0.author,i1_0.isbn,i1_0.actor,i1_0.director from item i1_0 where array_contains(?,i1_0.item_id) select i1_0.item_id,i1_0.dtype,i1_0.name,i1_0.price,i1_0.stock_quantity,i1_0.artist,i1_0.etc,i1_0.author,i1_0.isbn,i1_0.actor,i1_0.director from item i1_0 where array_contains('ar3: ARRAY [CAST(1 AS BIGINT), CAST(2 AS BIGINT), CAST(3 AS BIGINT), CAST(4 AS BIGINT)]',i1_0.item_id); 이 결과값에서 강의랑 다른 부분이 있어서 질문 드립니다 하이버네이트 6.2 라서 array_contains 인거 아는데 아래 부분이 이해가 안됩니다. select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 2023-10-09T19:14:55.677+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495677 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.delivery_id=? select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.delivery_id=1; 2023-10-09T19:14:55.677+09:00 DEBUG 2455 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 2023-10-09T19:14:55.678+09:00 INFO 2455 --- [nio-8080-exec-1] p6spy : #1696846495678 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpanew select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.delivery_id=? select o1_0.order_id,o1_0.delivery_id,o1_0.member_id,o1_0.order_date,o1_0.status from orders o1_0 where o1_0.delivery_id=2; orders 를 처음에 조회하고 나서 또 추가적으로 o1_0.delivery_id=? 이걸로 조회하는 결과가 왜 생기는걸까요?.. (배치사이즈도 강의랑 똑같이 100입니다) OrderApiController.java @GetMapping("/api/v3.1/orders") public List<OrderDto> ordersV3_page(@RequestParam(value ="offset",defaultValue = "0") int offset, @RequestParam(value ="limit",defaultValue = "100") int limit) { List<Order> orders = orderRepository.findAllWithMemberDelivery(offset,limit); List<OrderDto> result = orders.stream() .map(o -> new OrderDto(o)) .collect(Collectors.toList()); return result; } OrderRepository.java public List<Order> findAllWithMemberDelivery(int offset, int limit) { return em.createQuery( "select o from Order o" , Order.class ).setFirstResult(offset) .setMaxResults(limit) .getResultList(); } 이렇게 바꾸고 난 이후에 일어난 결과입니당.. 강의랑 In말고도 추가적으로 다른 부분이 있어서 질문드립니다 일단 제 스프링부트 버전은 3.1.3 입니다.

  • java
  • spring
  • spring-boot
  • jpa
ksg980105 댓글 2 좋아요 0 조회수 849

단방향 설정이 가능한지 궁금합니다!

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요! 강의영상에서는 가능한 많은 예제를 보여주려고 다양한 연관관계 매핑을 사용했다고 하셨는데 단방향을 지향하는 실무 관점에서 궁금한게 있습니다. Order N:1 Member => 다대일 단방향이 가능한지 OrderItem N:1 Order => 다대일 단방향이 가능한지 Order와 Delivery 관계에서 단방향이 안되는 이유 Item과 Category를 일대다, 다대일로 풀어내는게 맞는지 답변해주시면 감사하겠습니다!!

  • java
  • jpa
양양이 댓글 1 좋아요 0 조회수 315

버퍼가 비워지는 시점

미해결

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부

안녕하세요. Backpressure의 Drop 전략에서 버퍼가 비워질 때까지 Emit된 데이터가 Drop이 된다는 것은 이해했습니다. 그런데 1번 데이터가 subscriber에게 전달되어서 처리가 되면 버퍼에 자리가 한 자리 비게 되는데 왜 데이터가 계속 Drop이 되는건가요? (코드 실습에서 onNext()함수가 호출이 되어도 255,256,257 ~ 1024까지 모두 드랍됨) | 1, 2 | <-------- 3 듣랍 | 2, |. <-------- 4 드랍 (여기서 왜 4번 데이터는 안들어가나요?) | 5, 6 | Buffer DROP-LATEST를 보면 | 1, 2 | <---- 3들어오는 중 버퍼 가득 차서 drop | 2, 4 | <------ 1번이 버퍼에서 나가고 한 자리가 비어서 4번이 들어와짐 이런식으로 동작을 하는데 Drop은 이렇게 동작하지 않는 것 같아 버퍼가 어떻게 동작하는지 궁금하여 질문드립니다.

  • java
  • spring
  • project-reactor
  • webflux
jhjikhsdsdw 댓글 1 좋아요 1 조회수 364

swarmplot 에러발생 도와주세요~

미해결

공공데이터로 파이썬 데이터 분석 시작하기

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 좋은강의 감사드립니다. 19강에서 연도별 평당분양가격 swarmplot그리는 코드실행시 오류가 발생합니다. 어떻게 해결하면 될까요. <에러> ValueError: cannot reindex on an axis with duplicate labels <코드> # 연도별 평당분양가격 swarmplot 그리기 plt.figure(figsize=(12,3)) sns.swarmplot(data=df, x="연도", y="평당분양가격", hue='지역명') plt.legend(bbox_to_anchor=(1.02,1), loc=2, borderaxespad=0.)

  • python
  • pandas
  • numpy
Jake Seo 댓글 1 좋아요 0 조회수 377

인기 태그

인프런 TOP Writers

주간 인기글