inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

혹시 중급1에서 완벽히 이해가 안됬다고 느끼면 중급1편을 다시 재수강하고 중급2로 넘어가는게 좋을까요? 아니면 우선 순차적으로 모두 수강후에 재수강하는것이 좋을까요?

미해결

김영한의 실전 자바 - 중급 1편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 혹시 중급1에서 완벽히 이해가 안됬다고 느끼면 중급1편을 다시 재수강하고 중급2로 넘어가는게 좋을까요? 아니면 우선 순차적으로 모두 수강후에 재수강하는것이 좋을까요?

  • java
  • 객체지향
쿄쿄 댓글 1 좋아요 0 조회수 260

복구 불가능한 예외

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

강의에서 설명하신 복구 불가능한 예외에 대해서 질문드립니다. 말씀하신 복구 불가능한 예외라는게 구체적으로 어떤것을 의미하는것인지 이해를 잘 못하겠습니다. 앞서 배운것처럼 해당 예외가 발생하면 애플리케이션 로직에서 try~catch를 통해 예외를 잡아서 처리하면 되는것 아닌가요??

  • spring
  • mvc
  • spring-jdbc
오리쉐리 댓글 1 좋아요 1 조회수 124

mybatis xml파일을 만드는중 sql문법 질문

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

[질문 내용] 안녕하세요 열심히 강의를 듣던 중 MyBatis 적용1-기본 강의 11:37초 쯤에 and item_name...라는 sql구문을 쓰셨는데 이렇게 앞에 and가 들어가면 select * from item where and item_name... 이런 식으로 sql문이 쓰여지는거 아닌가요?? 앞에 and가 꼭 필요한건지 알아서 떼지는건지 궁금합니다!

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
kokiyo1030 댓글 1 좋아요 2 조회수 190

테이블 매핑 에러

미해결

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

[질문 내용] table에 설정을 해주고 했는데 다 잘되기는 하나 뒤에 에러인 sql Error가 뜨면서 mbr의 테이블이 없다고 하네요 뭐때문에 이런거죠?

  • java
  • jpa
형종 댓글 2 좋아요 0 조회수 157

Q클래스 파일 생성 오류

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 상황: build tool는 Gradle를 사용하고 있습니다. Gradle -> Tasks -> build -> clean Gradle -> Tasks -> other -> compileJava 위에 작업을 실행해도 generated폴더에 Q클래스가 생성되지 않습니다. 참고로 generated도 생성되지 않습니다. 다른 분들처럼 오류가 발생하지는 않습니다!!

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
항상배고픔 댓글 2 좋아요 0 조회수 1253

SpringMemberFormControllerV1 404에러

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

SpringMemberFormControllerV1에서 @Controller를 붙이고 실행하면 폼이 정상적으로 뜨는데 이렇게 @Controller를 주석처리하고 @Component @RequestMapping 를 붙이고 실행하면 404가 에러가 뜹니다. 게다가 이렇게 testcontroller를 해서 실행해도 마찬가지로 404가 에러가 뜹니다 어떻게 해야 되나요?

  • spring
  • mvc
이용규 댓글 7 좋아요 0 조회수 493

마이크로 서비스 최종정리 msa 화면 흐름도?를보고 이해되지않아 문의드립니다

미해결

Java 마이크로서비스(MSA) 프로젝트 실습

authentication-server는 어떤역활인가요? 강의 마지막에 볼때..클라이언트가 GateWay-server에 요청할경우 config-server 와 Eureka-server를 보내고 아이템서비스와 히스토리 서비스에 데이터 전달하는데 authentication-server는 아이템서비스로 봐야하는지 아니면 별도의 서버인지 궁금합니다. 14장 pdf파일에 두번째 그림보고 궁금해서 문의드립니다. 제가 느끼기엔 item-microservice와 유사한 기능이라 생각됩니다만.. 제가 이해하는게 맞을까요?

  • java
  • spring
  • rest-api
  • spring-boot
  • msa
이경용 댓글 1 좋아요 0 조회수 206

타임리프html

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

<li>${user.username} = <span th:text="${user.username}"></span></li> 제가 html에서 태그를 잘 알지 못해서 어느정도 영역까지 html을 알아야 하는지 감이 안잡혀서요 예를 들어 현재 예시에서 해당지역에 th:text로 타임리프를 사용하는것은 알겠지만 span태그와 같은것을 사용해야 한다는것 또한 알아야 하나요?? 아니면 프론트 분들이 span 태그를 사용해야 한다는것을 남겨주시는 건가요?? p태그, a태그, tr태그.. 등등 다양하게 변수를 감싸서 사용하는 것 같아서 알아야하는 부분인지 궁금합니다

  • spring
  • mvc
yy3082 댓글 2 좋아요 0 조회수 110

bindingResult 질문입니다

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

MVC2 강의를 듣고 복습하는 겸 직접 상품관리 페이지를 만들어보고 있습니다. validation 부분에서 상품 추가까지는 잘 작동하게 되었는데, 수정 부분에서 문제가 생겼습니다. 어느 부분이 문제인지 아무리 찾아봐도 모르겠어서 질문드립니다. @Data public class ItemUpdateForm { @NotNull private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; private Integer quantity; public ItemUpdateForm(Long id, String itemName, Integer price, Integer quantity) { this.id = id; this.itemName = itemName; this.price = price; this.quantity = quantity; } } @PostMapping("/edit/{itemId}") public String editItem(@PathVariable Long itemId, @Validated @ModelAttribute("item") ItemUpdateForm form, BindingResult bindingResult) { log.info("*** edit post 요청 ***"); log.info("itemUpdateForm: {}", form); if (bindingResult.hasErrors()) { log.info("bindingResult= {}", bindingResult); return "item/edit"; } itemService.updateItem(itemId, form); return "redirect:/item/detail/{itemId}"; } <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .field-error { border-color: red; color: red; } </style> </head> <body> <div> <div th:replace="fragment/bodyHeader :: bodyHeader" /> <div> <h2>상품 수정</h2> </div> <form method="post" th:object="${item}" th:action> <div> <label>ID</label> <input type="text" th:field="*{id}" readonly> </div> <div> <label>상품명</label> <input type="text" th:field="*{itemName}" th:errorclass="field-error" placeholder="상품명을 입력하세요."> <div class="field-error" th:errors="*{itemName}"> 상품명 오류 </div> </div> <div> <label>가격</label> <input type="text" th:field="*{price}" th:errorclass="field-error" placeholder="가격을 입력하세요."> <div class="field-error" th:errors="*{price}"> 가격 오류 </div> </div> <div> <label>수량</label> <input type="text" th:field="*{quantity}" th:errorclass="field-error" placeholder="수량을 입력하세요."> <div class="field-error" th:errors="*{quantity}"> 수량 오류 </div> </div> <button type="submit">저장</button> </form> </div> </body> </html> 상품 수정 페이지에서 다른 경우에는 잘 작동하는데, typeMismatch가 발생한 경우에는 bindingResult에 다른 에러는 담기지 않고 typeMismatch 에러만 담기고 있습니다. 다음은 에러 코드입니다. 2024-08-25T17:50:41.455+09:00 INFO 15096 --- [nio-8080-exec-3] community.demo.web.ItemController : *** edit post 요청 *** 2024-08-25T17:50:41.455+09:00 INFO 15096 --- [nio-8080-exec-3] community.demo.web.ItemController : itemUpdateForm: ItemUpdateForm(id=1, itemName=, price=10, quantity=null) 2024-08-25T17:50:41.455+09:00 INFO 15096 --- [nio-8080-exec-3] community.demo.web.ItemController : bindingResult= org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object 'item' on field 'quantity': rejected value [100a]; codes [typeMismatch.item.quantity,typeMismatch.quantity,typeMismatch.java.lang.Integer,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.quantity,quantity]; arguments []; default message [quantity]]; default message [Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; For input string: "100a"] 2024-08-25T17:50:41.456+09:00 WARN 15096 --- [nio-8080-exec-3] actStandardFragmentInsertionTagProcessor : [THYMELEAF][http-nio-8080-exec-3][item/edit] Deprecated unwrapped fragment expression "fragment/bodyHeader :: bodyHeader" found in template item/edit, line 15, col 10. Please use the complete syntax of fragment expressions instead ("~{fragment/bodyHeader :: bodyHeader}"). The old, unwrapped syntax for fragment expressions will be removed in future versions of Thymeleaf. 다음은 코드파일입니다. https://drive.google.com/file/d/1aDFEYzno4e6slRN8K2Tm5EFEYUb5WDJP/view?usp=sharing

  • spring
  • mvc
jungbeen 댓글 2 좋아요 0 조회수 194

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

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] https://drive.google.com/drive/folders/1jHYkBAHDuUoSr5hjn0Kp5CzTAWLem3Zu?usp=drive_link 코드를 쭉 작성해봤는데 마지막에 submit할 때 whiteError페이지가 나옵니다. gpt에 해결책을 물어봤을 때 에러 로그를 보면, Thymeleaf 템플릿을 처리하는 동안 문제가 발생한 것을 알 수 있습니다. 특히, item.orderItems[0].item.name 라는 표현식에서 문제가 발생했습니다. 에러의 원인 에러 메시지 중에서 가장 중요한 부분은 다음과 같습니다: Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '0' elements, index '0' is invalid 이 메시지는 item.orderItems[0] 에서 인덱스를 사용하여 컬렉션의 첫 번째 요소에 접근하려고 했지만, orderItems 컬렉션이 비어 있어서 인덱스 0 이 유효하지 않다는 것을 의미합니다. 즉, orderItems 컬렉션이 비어있거나 null일 때 이 표현식을 평가하려다가 오류가 발생한 것입니다. 해결 방법 컬렉션이 비어있을 경우에 대한 처리 : Thymeleaf 템플릿에서 컬렉션이 비어있는 경우를 대비하여 조건문을 추가할 수 있습니다. 예를 들어, orderItems 가 비어있지 않은 경우에만 접근하도록 할 수 있습니다. <div th:if="${item.orderItems.size() > 0}"> <span th:text="${item.orderItems[0].item.name}">Item Name</span> </div> 안전한 접근을 위한 기본값 제공 : orderItems 컬렉션이 비어있을 때 안전하게 처리하기 위해, th:text 속성에서 기본값을 제공할 수 있습니다. <span th:text="${item.orderItems.size() > 0 ? item.orderItems[0].item.name : 'No items'}">Item Name</span> 서버 측에서 데이터 처리 : 서버 코드에서 orderItems 가 비어있는 경우에 대해 적절히 처리하도록 할 수도 있습니다. 예를 들어, orderItems 가 비어있다면 기본값을 설정하거나, 비어있음을 표시하는 별도의 로직을 추가할 수 있습니다. 템플릿 구조 개선 : 템플릿 구조를 개선하여, orderItems 가 비어있을 때는 특정 HTML 요소를 렌더링하지 않도록 할 수 있습니다. 결론 에러의 원인은 item.orderItems[0].item.name 에서, orderItems 컬렉션이 비어있을 때 인덱스 0 에 접근하려고 했기 때문입니다. 이를 해결하려면 위의 방법 중 하나를 사용하여, orderItems 가 비어있는 경우를 안전하게 처리해야 합니다. 템플릿에서 Thymeleaf의 조건문이나 기본값 제공 기능을 사용하여 이 문제를 해결할 수 있습니다. 이런식으로 나왔고 h2데이터베이스의 order자체에 값이 잘 저장된 것은 확인했는데 무엇이 문제인지 잘 모르겠어서 질문드립니다

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 2 좋아요 0 조회수 199

포트폴리오 질문

해결됨

서버개발자 과제전형 완벽가이드 - 1편

이 강의를 기반으로 포트폴리오도 만들어보려고합니다. 포트폴리오 만들때 여러가지 기술들을 더 적용해보는게 좋을까요 아니면 강의에 나온 기술만 활용해도 충분할까요?

  • java
  • spring
  • spring-boot
  • database
  • 포트폴리오
데브킹 댓글 1 좋아요 0 조회수 296

테스트코드 데이터소스 분리

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 테스트 application.properties 와 메인의 application.properties 의 설정으로 테스트와 실제 어플의 db 동작을 분리 할수 있는데 만약에 테스트에서도 테스트 패키지 혹은 테스트 별로 db를 다르게 사용하려면 어떻게 해야하나요? 단위 테스트 할 기능중에 db종속적인 부분이 있어서 질문 드려요!

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
조희제 댓글 1 좋아요 0 조회수 139

양방향을 써야될 때가 언젠지 헷갈려요

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 왠만하면 단방향으로 다 끝낼 수 있는데 그러면 양방향은 언제 쓰는게 좋은 건가요??

  • java
  • jpa
김재원 댓글 1 좋아요 0 조회수 243

단방향으로만 지정할때는 어노테이션이 들어가나요?

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 양방향은 필요할 때만 사용하고 단방향만으로도 끝낼 수 있게 설계하시라고 하셨는데 그러면 단방향일때는 외래키가 있는 entity에만 private Ex ex; 같이 넣고 위에 어노테이션을 넣어야 하나요? 만약 넣는 다면 @ManyToOne 넣고 뭘 설정을 또 해야하나요?

  • java
  • jpa
김재원 댓글 1 좋아요 0 조회수 134

RequestMappingHandlerMapping 의 작동 과정에 대한 질문입니다

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

@RequestMapping이 컨트롤러에 붙지 않고 내부 메서드에만 붙어도 핸들러(컨트롤러)로 인식한다고 보면 될까요?

  • spring
  • mvc
맥스 댓글 1 좋아요 0 조회수 146

실무에서 excutor service사용

해결됨

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

안녕하세요. 실무에서 시간이 오래소요되는 3개의 delete쿼리를 excutor service를 사용하여 멀티스레드형식으로 1개의 스레드가 1개의 쿼리를 수행하도록 구현해보고 싶습니다. 그런데 멀티스레드를 사용했을때 트랜잭션은 보통 어떻게 처리하시나요.. ? 저는 @transactional 을 선언해서 사용하고 있는데 이는 스레드1개당 트랙잭션이 생성되는거라 제가 의도한데로 롤백이 제대로 안될거라고 하더라구요.. 3개의 쿼리가 모두 성공했을때 커밋되고 그렇지않으면 롤백시키고싶은데 이부분에 대한 지식도 혹시 알수있을까요? 추가로 혹시 해당 질문 관련 강의를 개설해놓으신게 있다면 알려주시면 감사하겠습니다!

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
backendman 댓글 1 좋아요 1 조회수 251

제가 작성한 코드 출력 결과에 의문이 있습니다.

미해결

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] < 사전 설명 > Rectangle 객체에서 hashCode()와 equals() 둘중 equals()만 오버라이드 하였습니다. 이후 public class RectangleTest { public static void main(String[] args) { Set<Rectangle> rectangleSet = new HashSet<>(); for (int i = 0; i < 13; i++) { rectangleSet.add(new Rectangle(20, 20)); } System.out.println(rectangleSet.size()); for (Rectangle rectangle : rectangleSet) { System.out.println("rectangle = " + rectangle); } } } 위와 같은 코드를 작성했을때 System.out.println(rectangleSet.size()); 출력 결과가 13이 나오고 for문의 출력 결과도 같은 결과가 13번 나옵니다. < 질문 > hashCode()를 오버라이드 하지 않음으로써 해시인덱스가 랜덤으로 배정되는 것으로 알고있습니다. 그래서 논리적으로 같은 객체가 들어오더라도 다른 해시인덱스에 할당 되는것이 문제가 됩니다. 하지만 제가 작성한 코드와 같이 많은 for문을 돌게 될면 새로 만들어진 Rectangle 객체가 언젠가 최소 한번쯤은 해시인덱스에서 중복된 객체를 만나게되고, 중복되는 해시 인덱스의 버킷에서 equals() 메서드가 실행되어 저장이 취소될것이라고 예상했습니다. 그래서 rectangleSet.size()는 13 미만이 될거라 생각했지만 아니었습니다. 오버라이드된 equals() 메서드가 실행되지 않는 이유가 무엇일까요?

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
공희배 댓글 1 좋아요 0 조회수 170

즉시 로딩 조회에 대해 질문 있습니다.

해결됨

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

즉시로딩 관계에서 조회를 할때 어떤 경우는 연관관계에 있는 데이터들을 join으로 한번에 끌고오는 경우가 있고 어떤때는 N + 1 문제가 발생하는 경우가 있었습니다. 그래서 아래와 같이 테스트를 해봤는데요 우선 member와 team의 관계를 즉시로딩으로 설정했습니다. 그리고 member을 한번만 저장하든 여러번 저장하든 N+ 1 문제가 발생했습니다. 그래서 즉시로딩 관계에서 어떤 경우에 연관관계에 있는 데이터들을 한번에 조인해서 가져오는지 궁금합니다. Team team = new Team(); team.setName("team1"); em.persist(team); Team team2 = new Team(); team2.setName("team1"); em.persist(team2); Member member = new Member(); member.setName("hi1"); member.setTeam(team); em.persist(member); Member member2 = new Member(); member2.setName("hi2"); member2.setTeam(team2); em.persist(member2); Member member3 = new Member(); member3.setName("hi3"); member3.setTeam(team2); em.persist(member3); em.flush(); em.clear(); List<Member> members = em.createQuery("select m from Member m", Member.class) .getResultList(); tx.commit();

  • java
  • jpa
감바스 댓글 1 좋아요 0 조회수 128

EntityManager DI

미해결

실전! 스프링 데이터 JPA

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. EntityManager을 @RequiredArgsConstructor을 통한 생성자 주입을 통해 넣는것이 이해가 안됩니다. EntityManeger을 bean으로 생성하지 않았는데 오류없이 실행된 이유는 다른 파일에서 EntityManager을 @PersistenceContext을 통해 bean으로 생성했기 때문인가요??

  • java
  • spring
  • spring-boot
  • jpa
김해찬 댓글 2 좋아요 0 조회수 120

em.flush(), em.clear() 후 프록시 객체 조회에 대해 질문 있습니다.

미해결

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

import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; public class Test { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { Team team = new Team(); team.setName("team1"); em.persist(team); Member member = new Member(); member.setName("hi"); member.setTeam(team); em.persist(member); em.flush(); em.clear(); Member findMember = em.find(Member.class, member.getId()); System.out.println(findMember.getTeam().getClass()); System.out.println(findMember.getTeam().getName()); System.out.println("========="); Team team2 = new Team(); team2.setName("team2"); em.persist(team2); findMember.setTeam(team2); em.flush(); em.clear(); Member findMember2 = em.find(Member.class, member.getId()); System.out.println(findMember2.getTeam().getClass()); System.out.println(findMember2.getTeam().getName()); tx.commit(); } catch (Exception e) { tx.rollback(); e.printStackTrace(); } finally { em.close(); } emf.close(); } } 실행결과 Hibernate: /* insert for jpa_basic.ex1_hello_jpa.entity.Team */insert into Team (name, TEAM_ID) values (?, default) Hibernate: /* insert for jpa_basic.ex1_hello_jpa.entity.Member */insert into Member (city, name, number, roleType, street, TEAM_ID, zipcode, MEMBER_ID) values (?, ?, ?, ?, ?, ?, ?, default) Hibernate: select m1_0.MEMBER_ID, m1_0.city, m1_0.name, m1_0.number, m1_0.roleType, m1_0.street, m1_0.TEAM_ID, m1_0.zipcode from Member m1_0 where m1_0.MEMBER_ID=? class jpa_basic.ex1_hello_jpa.entity.Team$HibernateProxy$q7Fz4jvQ Hibernate: select t1_0.TEAM_ID, t1_0.name from Team t1_0 where t1_0.TEAM_ID=? team1 ========= Hibernate: /* insert for jpa_basic.ex1_hello_jpa.entity.Team */insert into Team (name, TEAM_ID) values (?, default) Hibernate: /* update for jpa_basic.ex1_hello_jpa.entity.Member */update Member set city=?, name=?, number=?, roleType=?, street=?, TEAM_ID=?, zipcode=? where MEMBER_ID=? Hibernate: select m1_0.MEMBER_ID, m1_0.city, m1_0.name, m1_0.number, m1_0.roleType, m1_0.street, m1_0.TEAM_ID, m1_0.zipcode from Member m1_0 where m1_0.MEMBER_ID=? class jpa_basic.ex1_hello_jpa.entity.Team$HibernateProxy$q7Fz4jvQ Hibernate: select t1_0.TEAM_ID, t1_0.name from Team t1_0 where t1_0.TEAM_ID=? team2 안녕하세요 위 코드에 대해 질문 있습니다. findMember.getTeam().getClass() 출력결과가 class jpa_basic.ex1_hello_jpa.entity.Team$HibernateProxy$q7Fz4jvQ 와 같습니다. 그리고 findMember2.getTeam().getClass(); 출력결과가 class jpa_basic.ex1_hello_jpa.entity.Team$HibernateProxy$q7Fz4jvQ 와 같습니다. 중간에 clear()를 하여 영속성 컨텍스트를 비웠는데 왜 프록시 객체를 조회하면 똑같은 프록시 객체가 나오는지 궁금합니다.

  • java
  • jpa
감바스 댓글 2 좋아요 0 조회수 170

인기 태그

인프런 TOP Writers

주간 인기글