inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

OSIV OFF 에 대한 질문

미해결

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

영한님 강의 언제나 감사한 마음으로 들으며 공부하고있습니다! 질문이있습니다. OSIV OFF 를 하여 영속성컨텍스트 생존 범위를 Service까지로 제한하게되면, Lazy 초기화를 하는 코드들을 전부 Service로 밀어 넣으면 되는 것인가요? 저는 초보 프론트엔지니어라서 그런지,, 서버는 보통 템플릿을 사용하지않고, RestAPI 를 만드는 쪽에 익숙하여서 강의내용과 이부분이 조금 다른것같아 혼동이 옵니다. 다시한번 정리하면, 저같은 경우에는 (Restful api 를 만드는 경우) 모든 지연로딩 초기화 코드는 service 혹은 repository에 밀어넣고 여기서 끝내어, Controller에서는 service에서 넘어온 것을 반환하는 것 정도까지 하면 될까요? 언제나 영한님의 친절한 답변 감사합니다 !! + 추가질문으로 이런 코드는 service, repository 둘중 어디에 넣는 것이 더 좋을까요?

  • java
  • JPA
  • spring-boot
  • spring
Jon 댓글 1 좋아요 0 조회수 318

JPA와 Java 주의사항에 대한 여러 가지 질문

미해결

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

이번 강의에서는 평범한 도큐먼트만으로는 알 수 없는 정보를 알게 된 것 같아, 감사의 말씀드립니다.! 이 강의에서 몇 가지 JPA와 Java 사용에 대한 질문이 있습니다. 1. 전부 지연로딩으로 바꾸는 것이 좋다고 거듭 강조 주셨는데, 그렇다면 JPA는 왜 default로 EAGER를 사용하는 것인가요? EAGER를 default로 사용한다는 것은, 이렇게 사용하는 경우도 있고 장점도 있다는 것을 의미하는 것 같아 여쭤봅니다.! LAZY를 쓰지 않았을 때의 장점은 어떤 것들이 있나요? 2. Setter를 사용하지 않는 멤버변수에 한해 final을 사용하지 않는 이유는 무엇인가요? 아래 컬렉션 질문과 별개로 setter가 없는 모든 변수에 대해 궁금합니다. 3. 지금까지 필드 초기화는 생성자에서의 초기화와 다른 점이 우선순위만 다르다고 알고 있었습니다. 필드 초기화 -> 생성자 순으로 호출된다고 알고 있고, 단지 스타일 차이라고만 알고 있었습니다. 혹시 필드 초기화가 생성자 초기화보다 안전한 이유가 있을까요? 단순히 여러 생성자가 있을 때에 코드가 빠지는 실수를 막아준다는 이유 밖에 떠오르지 않는데, 다른 이유가 있는지 궁금합니다. 4. 양방향 연관관계 메서드에서 한 쪽만 연관관계 메서드를 적용시키면, 이를 모르고 호출하는 입장에서는 연관관계 메서드가 적용되지 않은 쪽을 호출하여 문제가 될 수도 있을 것 같다는 생각이 듭니다. Delivery <-> Order 관계를 예를 들면, 지금은 Order쪽에만 넣어서 Order에서 setDelivery할 때 자동으로 Delivery쪽도 해주었는데, &ldquo;연관관계 메서드 해놨겠지&rdquo;하며 Delivery에서 setOrder를 호출하면 문제가 될 것 같습니다. 물론 의미상 Order에서 Delivery와 OrderItem을 관리하는 것이 맞지만, 이렇게 직관적인 관계만 있지는 않을 것 같아서 그럴 때엔 어떻게 하는지 궁금합니다. 5. Address 부분 설명하실 때, 가볍게 "기본 생성자는 안 썼으면 좋겠지만 private으로 하면 안 되니 protected로 한다."라고 말씀주셨는데, 이러한 부분은 실제로 document를 읽지 않는 이상 알 수 없을 것 같아요. 강의를 듣는 사람 입장에서는 그렇구나 하고 넘길 수 있지만, 처음에 protected를 써야한다는 것은 그냥 단순히 private을 썼을 때 컴파일 오류를 통해 알게 되신건가요? (JPA에서 protected를 써야하는지 어떻게 알았냐가 메인 질문이라기보단, 이렇게 minor하지만 직관을 깨는 것들을 어떻게 보통 알게 되시는지가 궁금합니다.) 이 부분은 개인적으로 백엔드 팀장님으로의 김영한 선생님께 드리는 질문인데, 백엔드 쪽 공부를 하면서 느끼는 부분 중 하나가, 이렇게 tool을 사용하다보면 제 로직을 논리적으로 단단하게 짜는 시간도 있겠지만 그에 못지 않게 tool을 사용하기 위해 알아보는 시간도 적지 않게 쓰일 것 같은 느낌이 듭니다. 이러한 부분은 백엔드 개발이면 당연하게 받아들이는 부분인지 궁금합니다. 정말 길지만, 업무에 차질이 가지 않는 시간에 답변주시면 정말 감사하겠습니다. :)

  • java
  • spring-boot
  • spring
  • 웹앱
  • JPA
고운 코끼리 댓글 5 좋아요 3 조회수 386

DTO 와 Form

미해결

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

Controller DTO SERVICE Book Entity 위와 같은 DTO를 만들어 넘겨주는 형태가 1.Controller->Service로 넘어가는 파라메터가 많을경우 최적화가 잘 되어있는 형태가 맞는지 궁금합니다! 2.BookForm 과 DTO의 분리 이 예제에서는 BookForm 과 ItemUpdateDTO 과 같지만, 실무에서는뷰에서 사용하는 객체와, DTO 객체는 필드가 다르거나 다른 로직이 들어가게 되므로 분리하는것으로 이해하였습니다. 만약 뷰와 서비스에서 필요로하는 필드가 같다면, 뷰에서 받는 파라메터를 BookForm이 아닌 UpdateItemDTO로 받아도 괜찮은지 궁금합니다

  • java
  • spring-boot
  • JPA
  • 웹앱
  • spring
Space 댓글 3 좋아요 3 조회수 761

SpringConfig파일 dataSource 밑줄 오류

미해결

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

안녕하세요 강사님 강의 잘 듣고 있습니다. 아래 사진처럼 밑줄 오류가 뜨는데 실행해보니 별 이상은 없습니다. 정확인 무슨 이유인지 알 수 있을까요? 이것 뿐만 아니라 tymeleaf의 model 데이터 인식 오류로 인해 model 데이터에도 밑줄 오류가 뜨네요 인텔리제이가 약간 이런 오류가 많나봐요 ㅠㅠ

  • spring
  • java
  • spring-boot
  • MVC
방규빈 댓글 3 좋아요 1 조회수 398

junit으로 회원등록 API 테스트 코드를 만들어 보았습니다.

해결됨

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

junit으로 회원 등록 API 테스트 코드를 만들어 보았습니다. @ExtendWith (SpringExtension. class ) @SpringBootTest @AutoConfigureMockMvc class MemberApiControllerTest { @Autowired MockMvc mockMvc ; @Autowired ObjectMapper objectMapper ; // @BeforeEach // void setUp(@Autowired MemberApiController memberApiController){ // mockMvc = MockMvcBuilders.standaloneSetup(memberApiController).build(); // } @Test @DisplayName ( "회원_등록API_V1" ) void 회원_등록ApiV1 () throws Exception { //given MemberDto memberDto = new MemberDto( "회원1" ) ; final String jsonStr = objectMapper .writeValueAsString(memberDto) ; //when final ResultActions resultActions = mockMvc .perform( post ( "/api/v1/members" ) .contentType(MediaType. APPLICATION_JSON ) .content(jsonStr) ).andDo( print ()) ; //then resultActions.andExpect( status ().isOk()) .andExpect( content ().contentType(MediaType. APPLICATION_JSON )) .andExpect( jsonPath ( "$.id" ).value( "1" )) ; } @Data @AllArgsConstructor static class MemberDto { private String name ; } @Test @DisplayName ( "회원_등록API_V2" ) void 회원_등록ApiV2 () throws Exception { //given MemberDto memberDto = new MemberDto( "회원2" ) ; final String jsonStr = objectMapper .writeValueAsString(memberDto) ; //when final ResultActions resultActions = mockMvc .perform( post ( "/api/v2/members" ) .contentType(MediaType. APPLICATION_JSON ) .content(jsonStr) ).andDo( print ()) ; //then resultActions.andExpect( status ().isOk()) .andExpect( content ().contentType(MediaType. APPLICATION_JSON )) .andExpect( jsonPath ( "$.id" ).value( "1" )) ; } @Test @DisplayName ( "회원정보_업데이트V2" ) void 회원정보_업데이트V2 () throws Exception { //given MemberDto memberDto = new MemberDto( "회원3" ) ; final String jsonStr = objectMapper .writeValueAsString(memberDto) ; //when final ResultActions resultActions = mockMvc .perform( post ( "/api/v2/members/1" ) .contentType(MediaType. APPLICATION_JSON ) .content(jsonStr) ).andDo( print ()) ; //then resultActions.andExpect( status ().isOk()) .andExpect( content ().contentType(MediaType. APPLICATION_JSON )) .andExpect( jsonPath ( "$.id" ).value( "1" )) .andExpect( jsonPath ( "$.name" ).value( "회원3" )) ; } } 감사합니다.

  • spring
  • java
  • JPA
  • spring-boot
류재준 댓글 1 좋아요 8 조회수 587

Whitelabel Error Page

미해결

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

안녕하세요 강사님 강의보고 그대로 했는데 http://localhost:8080 에서 회원가입이나 회원목록을 누르면 Whitelabel Error Page 요런 에러가 나오는데 어디서 잘못된건지 찾아도 잘모르겠어서요.. 요 캡쳐화면으로 찾을수있는걸까요??

  • MVC
  • java
  • spring
  • spring-boot
혀켱 댓글 2 좋아요 2 조회수 626

~/test.mv.db 요파일 생성 여부는

미해결

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

안녕하세요 강사님 ~/test.mv.db 요파일 생성여부는 윈도우이용자는 어떻게 조회할수있는지 알수있을까요..??

  • java
  • spring-boot
  • spring
  • MVC
혀켱 댓글 5 좋아요 3 조회수 1884

h2 db 생성 에러

미해결

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

안녕하세요! [프로젝트 환경설정 - H2 데이터베이스 설치] 강의를 듣다가 질문이 생겨서 문의드립니다. 환경은 windows이고 강의 내용에 따라서 H2를 설치한 후 h2.bat을 실행해서 h2 콘솔을 열고 localhost로 바꾸고 jdbc:h2:tcp://localhost/~/jpashop가 아닌 jdbc:h2:~/jpashop 를 jdbc url에 입력하고 연결을 눌렀는데 db 설치 및 연결이 되지 않고 아래 첨부 사진과 같이 " Database "C:/Users/LG/jpashop" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 "라는 에러가 뜹니다. 혹시 몰라서 Generic H2 Server, Embedded 둘 다 해보고, h2를 여러번 껐다 켰다도 반복하며 계속 jdbc:h2:~/jpashop으로 생성을 하려는데 db가 존재하지 않다는 에러가 계속해서 뜹니다. 이런 경우에는 어떻게 해결해야하는지 구글링해도 jdbc:h2:~/test 이 방법밖에 나오지 않아 여쭙니다ㅠㅠ 감사합니다! Database "C:/Users/LG/jpashop" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (도움말) org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/LG/jpashop" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:622 ) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429 ) at org.h2.message.DbException.get(DbException.java:205 ) at org.h2.message.DbException.get(DbException.java:181 ) at org.h2.engine.Engine.openSession(Engine.java:71 ) at org.h2.engine.Engine.openSession(Engine.java:192 ) at org.h2.engine.Engine.createSessionAndValidate(Engine.java:171 ) at org.h2.engine.Engine.createSession(Engine.java:166 ) at org.h2.engine.Engine.createSession(Engine.java:29 ) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:340 ) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173 ) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152 ) at org.h2.Driver.connect(Driver.java:69 ) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:309 ) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:289 ) at org.h2.server.web.WebServer.getConnection(WebServer.java:785 ) at org.h2.server.web.WebApp.login(WebApp.java:1008 ) at org.h2.server.web.WebApp.process(WebApp.java:223 ) at org.h2.server.web.WebApp.processRequest(WebApp.java:173 ) at org.h2.server.web.WebThread.process(WebThread.java:139 ) at org.h2.server.web.WebThread.run(WebThread.java:94 ) at java.base/java.lang.Thread.run(Thread.java:832)

  • JPA
  • spring
  • 웹앱
  • spring-boot
  • java
jummi 댓글 5 좋아요 0 조회수 7860

findByName의 result를 List로 받는 이유가 있나요?

미해결

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

service 코드를 개발 할 때 중복 되는 member_name이 있는지 validate를 해줘서 결국 member_name이 unique 값이 될텐데 , getSingleResult를 이용하여 아래와 같이 작성하지 않는 이유가 있나요? public Member findByName ( String name ){ return em . createQuery ( "select m from Member m where m.name = :name " , Member . class ) . setParameter ( "name" , name ) . getSingleResult (); }

  • java
  • spring
  • JPA
  • spring-boot
  • 웹앱
김성일 댓글 1 좋아요 5 조회수 359

질문 있습니다!!

해결됨

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

안녕하십니까 강의 진짜 정말 유익하게 잘 듣고있는 졸업예정 취준생입니다. 컴퓨터공학이라는 전공의 수 많은 분야 앞에서 적성을 찾다가 최근에 웹개발로 마음을 굳혀서요.. 지금이라도 스프링을 배워보면서 포트폴리오용으로 CRUD 기능을 구현해보려고 하는데 바보같은 질문이지만 인정받으려면 html css javascript처럼 완전 기초의 언어가지고 만들어야 인정해주나요?.. 왜냐하면 지금 강의 앞부분만 들은 시점에서 스프링데이터 JPA가 CRUD기능도 다 제공을 해준다고 하더라구요... 그럼 구현 난이도도 그만큼 쉬워진다는건데 과연 스프링으로만 CRUD를 구현하는것과 프레임워크 없이 구현하는것과 회사 입장에서 많은 구분을 두는 편인가요?? 만약 그렇다면 JPA까지만 배운 상태로라도 CRUD를 구현해보려고 합니다.. 아예 이번 강의는 듣지 않은채로... (스프링 데이터 JPA를 귀에 담지 않은채로 라는 말입니다) 강의 정말 잘 듣고있습니다. 감사합니다.

  • spring
  • spring-boot
  • MVC
  • java
댓글 2 좋아요 2 조회수 196

데이터 베이스 파일 생성이 되지 않습니다.

미해결

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

안녕하세요? 강사님. 항상 강의 잘 듣고 있습니다. 다름이 아니라, 제가 window installer 로 다운받은후에 H2 콘솔을 열어서 , 여러방법을 사용해서 데이터 베이스 파일 생성을 해보려고 했는데 되지가 않습니다. 주소창에 localhost:8082 도 해보고 저장한 설정 에서 server 대신 embedded 도 해보고, JDBC URL 에서 ~/test로 변경도 해보고 다 해봤는데 계속 똑같이 아래와 같은 것만 뜨네요... Database "C:/Users/user/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149

  • spring
  • java
  • MVC
  • spring-boot
도도한 올빼미 댓글 3 좋아요 0 조회수 1252

8:00 getter/setter 윈도우 단축키는

미해결

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

alt+Insert 하면 getter and setter를 생성 할 수 있습니다,

  • spring
  • MVC
  • java
  • spring-boot
우기 댓글 1 좋아요 16 조회수 1128

cannot find symbol class Model 오류가 발생합니다

미해결

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

@Controller public class HelloController { @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; } } 위를 복사하여 실행할때, cannot find symbol class Model라고 오류가 발생합니다!ㅠ

  • spring-boot
  • spring
  • MVC
  • java
irin2771 댓글 1 좋아요 0 조회수 3296

Controller에서 Repository 접근

미해결

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

DDD 자료를 찾아보면 강의 자료와 같이 Domain이 전체 레이어를 아우르고, Controller에서 Repository를 접근 하도록 설계되어 있습니다. 기초 강의에서는 Entity를 Controller에 넘기지 말라고 말씀 하셨고 그 이유도 충분히 이해 했었습니다. 지금 예제에서는 Controller가 Repository를 호출하게 된다면 Entity가 넘어가게 될텐데... 강의상 편의를 위해서 하신건가요? 실무에서도 빈번하게 사용하는 구조인가요? 추가적으로 DTO를 사용한다면, 아래 예제 계층에서 오고가는 DTO에 대한 표현(naming rule, suffix, package 등등)을 어떻게 하시는지 궁금합니다. - web <-> controller - service <-> repository

  • 웹앱
  • java
  • JPA
  • spring
  • spring-boot
챕스틱 댓글 2 좋아요 3 조회수 1144

단위테스트가 어떤 것인지 좀 더 구체적으로 설명 부탁드려도 될까요?

미해결

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

안녕하세요. 좋은 강의 항상 감사드립니다. 단위 테스트의 중요성을 강조해주셨는데 제가 아직 초보라서 잘 이해가 가지 않습니다. 제 수준으로 테스트를 이해한 것을 말씀드리자면, 만약 수량이 2개가 추가되면, 그것이 데이타베이스에 2개가 추가 됐는지를 확인하고, 그것이 화면으로 제대로 출력되는 것을 확인하는 것이 가장 최소한의 테스트라고 생각하기 때문입니다. 그런데 DB를 거치지 않고 한다는 것이 어떤 의미인지 사실 잘 모르겠습니다. 지금 in memory를 DB로서 사용하고 있는데, 이것조차 사용하지 않게 되는건가요? 혹시 가능하시다면 지금의 예제에서 단위테스트를 한다면 예시를 짧게라도 한 줄 부탁드려도 될까요? 그런 측면에서 제가 테스트에 대하여 이해도가 너무 낮은 것이 아닌가 싶습니다. junit이란 것도 선생님 수업 들으면서 이번에 처음 알게 됐거든요. 그래서 혹시 가능하다면 테스트와 관련하여 참고할만한 책이나 자료가 있으면 추천 부탁드려도 될까요? 감사합니다.

  • spring
  • java
  • JPA
  • spring-boot
  • 웹앱
infoqoch 댓글 1 좋아요 1 조회수 348

비지니스 로직구현 Entity VS Service

미해결

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

안녕하세요 강사님! 이번 강의에서는 Item.class에 다음과 같이 해당 변수에 대한 접근은 해당 entity에서 작성하여 주셨는데요, /* * 재고 수량 증가 */ public void addStock ( int quantity){ this . stockQuantity += quantity ; } /* 재고 수량 감소 */ public void removeStock ( int quantity){ int restStock = this . stockQuantity - quantity ; if (restStock < 0 ){ throw new NotEnoughStockException( "need more stock" ) ; } this . stockQuantity = restStock ; } 1. 그렇다면 만약 회원의 주소를 변경하는 로직을 만든다고 하면 이 또한 memberRepository.class가 아닌 member.class에서 변경하여 주는 것이 맞을까요?? 2. 또 비슷한 맥락으로 service 구현과 entity에서의 로직 구현의 차이는 객체의 맴버변수에 접근하는지/ 맴버 자체에 접근하는지의 차이로 이해하면 될까요?? 감사합니다^^!

  • java
  • JPA
  • spring-boot
  • spring
  • 웹앱
contigunu66 댓글 2 좋아요 22 조회수 7369

Book이 준영속 엔티티

미해결

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

updateItem 메소드에서 Book이 DB에 저장된적이 있어서 식별자가 존재하여 영속성 컨텍스트에서 관리하지 않는다고 하셨는데요. 1. 그러면 Book을 new Book()으로 생성하고 setId에서 임의로 현재 DB에 존재하지 않는 id를 입력하면 어떻게 될까요?? 2. 준영속 엔티티가 된 이유가 id가 존재해서 라기 보다는 Book 객체의 생성시 영속성컨텍스트를 거치지 않고 생성자를 거쳤기 때문에 준영속 엔티티가 된건 아닌가요??

  • spring-boot
  • java
  • 웹앱
  • JPA
  • spring
ijeee 댓글 2 좋아요 0 조회수 576

질문드립니다.

해결됨

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

안녕하세요! 강의 정말정말 잘 듣고있습니다! 예제에서는 모두 MemberRepository의 인터페이스를 통해 의존성 주입을 받도록 되어있는데, 그렇다면 스프링 데이터 JPA에서 제공하는 여러 기능들을 이용하기 위해서는 memberRepository에 사용할 기능을 추가해야 하는 건가요~? 새해복 많이받으세요!

  • java
  • spring-boot
  • mvc
  • spring
Chany 댓글 1 좋아요 0 조회수 234

@lob 관련하여 질문 드립니다.

해결됨

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

안녕하세요! JPA를 활용하여 여러가지 조회테스트를 해보고 있는데 @lob 컬럼이 존재하는 경우 select시 쿼리가 매우 느린현상을 발견했습니다. @lob 컬럼이 존재하는 경우에 쿼리를 빠르게 수행할 수 있는 방법이 있을까요?

  • java
  • spring
  • JPA
  • spring-boot
김종호 댓글 6 좋아요 3 조회수 1642

9분30초 findOrderDtos()관련 질문입니다.

미해결

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

안녕하세요 팀장님 프로그래밍 강의를 재미있게 듣기는 처음입니다. ^^ findAllWithMemberDelivery()과 달리 findOrderDtos()에서는 fetch join을 사용하면 에러가 발생합니다. return em.createQuery( "select new jpabook.jpashop.api.dto.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address) " + " from Order o" + " join o.member m " + " join o.delivery d ", OrderSimpleQueryDto.class ).getResultList(); <자바 ORM 표준 JPA 프로그래밍>에서는 SELECT m FROM Member m JOIN FETCH m.team 은 다음 SQL문과 같고 SELECT M.*, T.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID=T.ID 일반 JOIN인 경우 SELECT m FROM Member m JOIN m.team t 다음 SQL과 같다 하셨는데 SELECT M.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID=T.ID 위에서는 join만 사용했는데 어떻게 member나 delivery를 별도 query로 참조하지 않고 가져왔는지 궁금합니다. 답변하신 내용중 https://www.inflearn.com/questions/23847를 참고하면 "fetch join을 사용하는 이유는 엔티티 상태에서 엔티티 그래프를 참조하기 위해서 사용하는 것입니다. 따라서 당연히 엔티티가 아닌 DTO 상태로 조회하는 것은 불가능합니다. 이 경우 fetch join을 사용하지 마시고, 그냥 순수한 join을 사용하시면 원하는 결과를 얻을 수 있습니다" 라 하셨는데 만약 위의 jpql에 fetch가 있었다면 엔티티 상태이기 때문에 에러가 나지 않고 추후 new를 통해 DTO로 변환해야 하는 것 아닌지요?

  • java
  • spring-boot
  • JPA
  • spring
9round 댓글 1 좋아요 1 조회수 307

인기 태그

인프런 TOP Writers

주간 인기글