묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링부트 시큐리티 & JWT 강의
실수로 google auth 시크릿 키를 깃에 업로드 했어요
업로드 하고 구글 메일로 시크릿키가 노출되었다고 메일이 와서 10분 내로 대시보드에 있는 프로젝트를 닫았는데, 30일 뒤에 닫힌다고 알람이 오고, 다시 대시보드를 보니까 사진과 같이 뜨던데 이후에 문제가 발생할까요...?ㅠㅠㅠㅠ
-
미해결스프링 부트 - 핵심 원리와 활용
사이드 프로젝트를 만드려고 하는데 어느편까지 봐야할까요?
사이드 프로젝트를 만드려고 하는데 어느편까지 보고 만드는게 좋을까요?강의를 다 듣고 사이드 하기에는 좀 늦을 것 같아서...
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
사이드 프로젝트를 만드려고 하는데 어느편까지 봐야할까요?
사이드 프로젝트를 만드려고 하는데 어느편까지 보고 만드는게 좋을까요?강의를 다 듣고 사이드 하기에는 좀 늦을 것 같아서...
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
커넥션 풀 사용 시 세션 생성 시점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]커넥션 풀이 10개의 커넥션을 생성하면 세션도 10개가 만들어진다고 하셨는데, 커넥션 풀에 커넥션을 생성하는 시점에 세션이 만들어지는 것인지 아니면 클라이언트가 커넥션 풀의 커넥션을 꺼내서 사용할 때 세션이 만들어지는 것인지 궁금합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
h2 database 연결 방법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]h2 데이터베이스와 스프링을 연결할 때, application.yml 파일에 datasource 정보를 넣어 연결하는 방법과 해당 강의에서 진행하는 DBConnectionUtil 클래스를 만들어 직접 연결하는 방법이 같은 기능을 수행하는 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
회원목록 프론트 컨트롤러v2에서 목록이 안보입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이렇게 뜹니다,,코드입니다 ㅠ
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
editForm.html
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의를 듣던 중 editForm.html에서 저장버튼의 타입은 submit으로 되어있고 저장버튼을 누를시에 form에 action이 item.html로 되어있는데 컨트롤러로 어떻게 가는지 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
프로젝트 세팅 DB
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 이번에 2편부터 보고있는데 강의를 보고 초기 프로젝트를 세팅만 했는데 DB가 있는거처럼 저장이되고 리스트가 뜨네요. DB를 세팅하지않고도 이렇게 저장수정목록이 뜰수있는 이유가 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
lombok 관련 오류입니다
BookService에서 @RequiredArgsConstructor을 설정하면책 대출, 책 반납 등 BookRepository를 사용하는 코드에서 에러가 발생합니다. 오류 메시지는 "this.bookRepository" is null입니다. BookService에서 bookRepository가 받아오지 못하는 것 같습니다.또한, 해당 어노테이션을 지운 후 생성자로 변경하면, 코드는 정상적으로 돌아가게 됩니다. Lombok의 문제인 건지, 코드의 특정 부분을 설정하면 되는 것인지 궁금합니다.
-
미해결토비의 스프링 부트 - 이해와 원리
스프링 검색 유입 경로 pc or 모바일 구분 방법 문의 드립니다
안녕하세요~ 토비님 참여중인 프로젝트가 현재 포탈 사이트 성격입니다 해당프로젝트에서 커뮤니티 기능이 있는데커뮤니티 기능 중에 접속 유입 경로를 따져통계 조회를 해야 하는 기능이 있습니다 개발하는 커뮤니티에 pc 로 접속 할 수 있고 모바일로 접속 할 수 있습니다 PC or 모바일 중어느 기기를 통해서 해당 포탈 커뮤니티에 접속해서 검색했는지따질려면 스프링의 어느 기술 라이브러리를이용해서 따지면 되는지 문의 드립니다감사합니다 수고하세요. 김동희 드림 #sping#스프링#pc#모바일#접속 #구분
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
/WEB-INF/views/members.jsp 작성 중 오류입니다.
2023-10-10 07:00:40.212 ERROR 44367 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[.[mvcMemberListServlet] : Servlet.service() for servlet [mvcMemberListServlet] in context with path [] threw exception [The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application] with root cause jsp를 강의자료 그대로 작성하니 위같은 오류가 발생하면서 500에러가 발생하는데 원인을 알 수 있을까요?jstl은 1.0버전입니다. jstl버전에 따라 다른 uri를 설정해줘야한다고 해서 아래 uri로 시도해도 동일 에러가 발생합니다.http://java.sun.com/jstl/corehttp://java.sun.com/jstl/core_rt
-
미해결스프링 핵심 원리 - 기본편
AppConfig를 beforeEach() 내부에서 선언하는 것과 외부에서 선언하는 것의 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에선 아래 코드처럼 beforeEach() 내부에 AppConfig가 선언되어 있는데요.public class OrderServiceTest { MemberService memberService; OrderService orderService; @BeforeEach public void beforeEach() { AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); orderService = appConfig.orderService(); } 아래 코드처럼 AppConfig는 beforeEach() 밖에서 미리 선언해 두면 안 되나요? 테스트 실행해 봤을 땐 오류는 없는데, 실무에선 안 좋은 코드인가요? 그렇다면 이유가 궁금합니다. MemberService memberService; OrderService orderService; AppConfig appConfig = new AppConfig(); @BeforeEach public void beforeEach() { memberService = appConfig.memberService(); orderService = appConfig.orderService(); }
-
미해결JPA & Spring Data JPA 기초
JPA 실무 @Entity을 @Embeddable 대체하는 경우가 많은가요?
안녕하세요.실무에서 JPA 적용하여 프로젝트를 처음 진행하고 있습니다.제가 몰랐던 부분을 강의를 듣다 알게 되어 문의 드립니다. 저는 DB Table에 해당하는 class를 만들고 @Entity 정의를 통해 매핑한다고 생각했는데Table에 1:1 대응하는 class는 필요하겠지만 모든 class에 @Entity 정의를 할 필요는 없는것으로 이해했습니다.많은 테이블이 밸류매핑으로 처리가 가능할 것 같아서요(ex. User - UserDetail Table 같이 master-detail 관계 같은 경우.)14번째 강의 예제인 user - membership_card 테이블의 경우도 @Entity 대신 @Embeddable를 사용해도 될 것 같고user - best_pick Table 의 경우는 Entity 매핑을 하는 편이 어울릴 것으로 보여집니다. 1.위 내용처럼 실무에서 밸류매핑이 가능한 class의 경우 @Embeddable 어노테이션으로 정의하여 사용하는 경우가 많은 건가요? 2.관계에 따라 동일한 Table이 밸류 매핑 또는 엔티티 매핑으로 해야할 경우는 없는 걸까요?(User Table에 대응하는 user class가 엔티티가 되고 UserDetail Table에 대응하는 userDetail class가 @Embeddable 가 될 경우user - best_pick 관계에서 best_pick class에서 user class를 참조 할때 엔티티 매핑 외에 밸류 매핑을 할 수 있는 방법이 있을까요? 이미 user class는 엔티티인 상황인데 @Embeddable 정의를 통해 매핑을 다시 맺을 수 있는 것인지 헷갈리네요.. ㅜㅜ 정확한 이해를 위하여 문의 드렸습니다. 더불어 좋은 강의 감사합니다!! :)
-
미해결Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
Context 체인 전파
안녕하세요. Context 체인은 아래에서부터 위로 전파된다고 하셨는데 그 이유가 궁금합니다. Stream()에서 순서대로 연산을 실행해서 조건에 맞는 것만 다음연산으로 넘어가는데 어떻게 context는 반대 방향으로 동작을 하나요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
38강 Cannot load driver class: org.h2.driver
안녕하십니까. 다름이 아니라 profile을 local로 실행 시 오류가 나서 질문을 드립니다. 인텔리제이 Community 버전이라서VM option 추가 후, -Dspring.profiles.active=local를 입력헀습니다. 실행을 할때 local 프로필이 활성화가 되었다고 하지만 오류가 발생합니다. VM option이 잘못된건가 싶어서-Dspring.profiles.active=dev로 설정 시 MySQL이 정상적으로 작동합니다.즉 h2관련 코드를 제가 잘못작성했거나 아니면 다른이유로 오류가 발생한다는건데 문제점을 제대로 파악을 하기가 힘들어서 질문을 드립니다. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.driverCaused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.driverCaused by: java.lang.IllegalStateException: Cannot load driver class: org.h2.driverExecution failed for task ':LibraryAppApplication.main()'.> Process 'command 'C:/Program Files/Java/jdk-17/bin/java.exe'' finished with non-zero exit value 1* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
in 최적화에서 궁금한 점
new 오퍼레이션을 써서 List<OrderItemQueryDto>을jpql로 가져온 부분에서 말인데요..첫 번 째에서 in :여기서 띄우고 값을 넣으면 매개 값을 인식을 못 하는 거 같더라구요 두 번째는 쿼리가 잘 나가구요 혹시 정확한 이유를 알 수 있을까요?where oi.order.id in : orderIdswhere oi.order.id in :orderIds
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
31:04 부분 "select o from Order o" 만 했을 경우 결과값
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 입니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA 내부 동작 vs JPQL 또는 QueryDSL 내부 동작
JPQL는 데이터베이스에 SQL을 날려 데이터를 가져오지만 영속성 컨텍스트에 동일한 값이 있다면 DB에서 가져온 값을 버리게 되는데, QueryDSL은 내부적으로 JPQL을 사용하기 때문에, JPQL 처럼 DB 먼저 조회한 후 영속성 컨텍스트에 동일한 값이 있다면 DB에서 가져온 값을 버리게 되나요?1번과 같이 조회 상황이 아닌 수정, 삭제, 추가하는 경우에도 JPQL의 경우, 영속성 컨텍스트에 먼저 데이터를 수정, 삭제, 추가 하기 보다 DB에 먼저 쿼리를 날린 후에 영속성 컨텍스트에 반영하는건가요?JPA는 영속성 컨텍스트를 먼저 확인하는 거와 달리, JPQL은 DB 조회 부터 하는데, 어떤 이유 때문에 둘이 다르게 동작하는 걸까요?
-
해결됨
스프링 dependency 추가 어떻게 해요?
aspose엑셀 Dependency 추가가 잘안되네요..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
영속성 컨텍스트의 엔티티 동일성 보장
만약, 동일한 식별자로 엔티티를 조회하면, 조회할 때마다 동일한 인스턴스가 조회되어, 영속성 컨텍스트는 엔티티 동일성을 보장해준다고 하는데, 같은 트랜잭션이 아니더라도, 동일한 영속성 컨텍스트여도 동일성이 보장되나요?