inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

em.find(), select문 질문

미해결

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

em.find(Member.class, 1L); System.out.println("========================"); tx.commit(); 위 코드를 수행한 결과 select문 이후에 '========================'가 출력되었습니다. em.find()를 하면 우선 1차 캐시에서 엔티티를 찾은 후, 없으면 바로 select문을 DB에 날리는 것이 맞을까요? tx.commit()하는 시점과 관계없이 1차 캐시에 엔티티가 없으면 바로 select 쿼리를 날리는 것이 맞을까요?

  • java
  • jpa
도토리 댓글 1 좋아요 0 조회수 325

스냅샷 업데이트 관련 질문

해결됨

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

'dirty checking에서 스냅샷은 엔티티의 최신 상태를 반영하고 있다. 스냅샷은 계속 업데이트된다'가 맞을까요? 스냅샷이 처음에는, 엔티티가 1차 캐시에 들어온 상태에 대한 스냅샷이지만, 엔티티를 변경하면 스냅샷도 변경되는 것이 맞을까요? 예를 들어, member 테이블에 (1L, "A")가 저장되어 있고, 스냅샷도 (1L, "A")인 상황에서, 다음 코드를 실행하였습니다. Member findMember = em.persist(new Member(1L, "A")); findMember.setName("AA"); tx.commit(); tx.commit()이 호출되면 flush()가 호출되고, 엔티티와 스냅샷을 비교하여 update 쿼리가 DB에 전달됩니다. 그리고 비교한 시점 이후 어디에선가 스냅샷이 변경되는 것이 맞을까요? 스냅샷이 변경된다고 생각하게 된 상황은 다음과 같습니다. (엔티티를 (1L, "AA")로 변경한 이후) 엔티티를 (1L, "A")로 변경을 했을 때, update 쿼리가 DB에 전달되었기 때문인데요, 만약, 처음에 스냅샷이 (1L, "AA")로 변경되지 않았다면, 엔티티와 스냅샷은 (1L, "A")로 동일하였을 것이고, 따라서 update 쿼리가 DB에 전달되지 않을 것이기 때문입니다.

  • java
  • jpa
도토리 댓글 1 좋아요 0 조회수 414

쓰기 지연 관련 질문

미해결

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

상황: hibernate.jdbc.batch_size 옵션을 사용하지 않고, em.persist()를 4번 하였다. 쓰기 지연 SQL 저장소에 insert 쿼리가 4개 존재하고, commit 시점에 DB에 insert 쿼리 4개가 전달된다는 것은 알겠습니다. 그런데, insert 쿼리가 DB에 전달될 때, 4번의 네트워크가 반복되는 것인가요? ( https://www.inflearn.com/questions/41344/batch-size%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%A7%88%EB%AC%B8%EC%9D%B4-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 이 질문을 보고 질문드립니다) 그리고 4번의 네트워크가 반복된다는 것이 'DB와 커넥션 맺고 insert 쿼리 1개 전달하고 커넥션을 종료'하는 과정이 4번 반복된다는 뜻인가요? 그렇다면 em.persist()할 때마다 insert 쿼리를 보내는 것과 무슨 차이가 있는 것이죠...?

  • java
  • jpa
도토리 댓글 1 좋아요 0 조회수 448

수업 자료 다시 다운로드

미해결

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

수업자료 한번 다운 받았었는데 컴퓨터 포맷해서 다 날라갔습니다.ㅜㅜ 다시 다운 받을 수 없나요??

  • java
  • jpa
5hayeonnn 댓글 1 좋아요 0 조회수 322

fetch().size()

미해결

실전! Querydsl

fetchResult() 가 5.0 부터 권장하지 않는다 해서 fetch().size()를 사용한다고 하는데 List<MemberTeamDto> content = queryFactory .select(new QMemberTeamDto( member.id.as("memberId"), member.username, member.age, team.id.as("teamId"), team.name.as("teamName") )) .from(member) .leftJoin(member.team, team) .where( usernameEq(condition.getUsername()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe()) ) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); int total = queryFactory .selectFrom(member) .leftJoin(member.team, team) .where( usernameEq(condition.getUsername()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe()) ).fetch().size(); int size = content.size(); return new PageImpl<>(content, pageable, total); 아래처럼 count 쿼리를 날려서 구한 total 값과 위에 content 쿼리문의 size()값이 다르게 나오던데 이 size 값은 단지 PageRequet.of로 넣어준 size 값인가요?? 두 방식 중 total로 구하는 방식이 맞는건가요?

  • java
  • jpa
성실한 공작새 댓글 1 좋아요 0 조회수 993

단위테스트의 개념에 대해서 질문 드립니다!

해결됨

Practical Testing: 실용적인 테스트 가이드

안녕하세요! 테스트 강의가 드문데 정말 친절하게 잘 알려주셔서 감사하게 듣고 있습니다 :) 아직 강의를 다 들은 것은 아니지만 강의 내용 중 궁금한 것이 있어 질문 드립니다. 제가 테스트를 제대로 공부해본 적이 없어 혼자서 독학을 하며 공부했던 단위테스트는 주로 Mock과 항상 연관지어 설명이 되어 있었습니다. 통합테스트(@SpringBootTest)는 스프링 컨테이너를 띄우고 bean으로 등록된 모든 빈을 가지고 테스트를 하는 것인데 반해, 단위테스트는 해당 계층(Layer)을 테스트할 때 꼭 필요한 bean만 가지고 와서 최소 단위(메서드나 클래스)로 테스트를 진행한다고 저는 알고 있었습니다. 그래서 예를 들어 Service 계층 테스트를 진행할 때면 Repository에 관련된 bean들은 Mockito 등을 사용해서 Mock을 만들고 InjectMocks를 해준다는 식으로 저는 공부를 하고 테스트 코드를 작성한 경험이 있습니다. 그런데 오늘 강의에서 강사님이 설명해주시는 내용을 듣다보니 @SpringBootTest 와 같은 어노테이션과 상관없이 단위테스트를 진행하시는 것 같다는 인상을 받았습니다. Order에 대한 테스트를 진행하실 때도 단위테스트라는 언급을 하셨고, OrderSerivice에 대한 테스트를 진행하실 때도 @SpringBootTest를 사용하고 있지만 단위테스트를 하신다고 표현을 하시더라구요. 혹시 통합테스트와 단위테스트를 구분하는 강사님만의 방법이 있는 것인지 궁금합니다! 장문 글 읽어주셔서 감사합니다!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
비가싫어요 댓글 1 좋아요 14 조회수 1684

p6spy, meta-inf 위치

미해결

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

현재 스프링 부트 3.0.6버전을 사용하고 있어서 p6spy를 사용하기 위해 pdf에 적힌 대로 파일을 추가하려고 했지만 META-INF 폴더를 찾을 수 없어서 질문 드립니다

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
냠냐만 댓글 1 좋아요 0 조회수 809

@Param의 존재 이유>?

미해결

실전! 스프링 데이터 JPA

@EntityGraph(attributePaths = "team") List<Member> findEntityGraphByUsername(@Param("username")String username); 이번 강의를 복습하다 보니까 강사님께서 @Param을 사용하셨더라구요.(강의 20:59) findByAge(), findOptionalByUsername()과 같은 메소드는 @Param 애노테이션 없이도 잘 동작 했는데 따로 특별한 이유가 있는 것일까요?

  • java
  • spring
  • spring-boot
  • jpa
댓글 1 좋아요 1 조회수 546

fetchResult() deprecated

미해결

실전! Querydsl

됐던데 앞으로는 강의의 searchPageComplex와 같은 방법 (content따로, total따로)으로만 구현하고 사용하면 되는 건가요 ? searchPageSimple 부분은 필요가 없는 건가요?

  • java
  • jpa
댓글 1 좋아요 0 조회수 1379

완성된 코드 자료를 그대로 실행했는데 오류가 발생합니다..

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

완성된 코드 그대로 서버를 실행했는데 이렇게 오류가 발생합니다.. 이유를 찾지 못해 질문드립니다

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
NH_Club 댓글 1 좋아요 1 조회수 386

[수업질문] config-server 실행은 되는데, 동작을 안 함

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

windows 10, eclipse에서 수업을 따라하고 있습니다. 서버 동작도 안 되었는데 .m2파일 중 configu와 관련된 내용 지우고 이클립스 다시 시작하니 config서버가 동작은 합니다. 그런데 git 레파지토리에 있는 ecommerce.yml파일을 읽지 못 하는지, 아니면 자신이 일반 서버로 착각하는지 404 에러가 납니다. 이미지를 첨부했습니다. 어떻게 해야 이 고통에서 벗어날 수 있을까요? 동영상 강의 보면, 쉽게 배울 수 있을 거라 생각했는데 동영상 강의 촬영일과 2년 정도 차이가 나니 이런 저런 걸로 계속 에러가 나네요.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
댓글 2 좋아요 0 조회수 1318

[에러] Database not found에 관해서

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 메인어플리케이션을 실행시 에러가 발생하여 질문남깁니다. 해당에러는 다음과 같습니다. 하지만 해당경로에는 아래와 같이 파일이 존재하구요 다른 글들을 참고해봤지만 에러가 해결되지 않아서 글을 남깁니다. 감사합니다. github https://github.com/heechanCho/jpashop

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
Heechan Cho 댓글 1 좋아요 0 조회수 370

tuple자료구조가 어떻게 되어 있는 건가요 ?

미해결

실전! Querydsl

@Test public void tupleProjection() throws Exception { List<Tuple> result = queryFactory .select(member.username, member.age) .from(member) .fetch(); System.out.println("result = " + result); for (Tuple tuple : result) { String username = tuple.get(member.username); Integer age = tuple.get(member.age); System.out.println("username = " + username); System.out.println("age = " + age); } } result = [[member1, 10], [member2, 20], [member3, 30], [member4, 40]] username = member1 age = 10 username = member2 age = 20 username = member3 age = 30 username = member4 age = 40 출력값이 위와 같은데 .get()메소드로 꺼내는 걸로 보면 Map과 같은 자료구조인건가 싶기도 하면서, 통째로 출력하면 List<List<>>와 같은 자료구조의 모습이더라구요 tuple은 어떤 자료구조인가요?

  • java
  • jpa
댓글 1 좋아요 0 조회수 1260

@GeneratedValue 질문하고싶어요

해결됨

실전! 스프링 데이터 JPA

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @GeneratedValue에서 지금은 autoincrement로 숫자로 단순히 pk값이 1/2/3/4이런식으로 사용되고있는데 MEMBER00001/MEMBER00002/MEMBER00003같이 PK값에 특정한 문자열이 앞에 들어가는경우는 어떻게하나요?

  • java
  • spring
  • spring-boot
  • jpa
박성준 댓글 1 좋아요 0 조회수 358

join메서드 궁금증입니다 ..

미해결

실전! Querydsl

List<Member> result = queryFactory .selectFrom(member) .join(member.team, team) .where(team.name.eq("teamA")) .fetch(); 위의 QueryDSL문을 sql문으로 번역하면 select * from member as m join team as t on m.team _id = t.team _id where t.name ='teamA' 가 맞나요? 관계형DB를 객체 다루듯이 사용하기 위해 Member안에는 Team 클래스가 있고, Team 클래스 안에는 Member 클래스가 있지만 실제로는 .join(member.team, team) 와 같은 코드를 작성하면 내부적으론 DB의 테이블에 가서 외래키와 기본키를 비교해서 값을 가져오는 건가요 ?

  • java
  • jpa
댓글 1 좋아요 0 조회수 505

강의 내용에서 스키마 자동 생성 부분이 안되는데 어떤 게 문제일까요?

미해결

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

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 자바 ORM 표준 JPA 프로그래밍 - 기본편 14강 내용 중에 기존에 ID와 NAME만 있던 것에 ppt 내용대로 새롭게 추가하였는데 스키마가 변경된 테이블에 따라 자동으로 생성이 되지 않는데 해당 테이블을 drop 하고 실행하면 될까요?

  • java
  • jpa
임수한 댓글 1 좋아요 0 조회수 526

treat 관련 질문이 있습니다.

미해결

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

JOINED 전략을 명시한 Item 클래스와 그런 Item 클래스를 상속한 Album, Book, Movie 클래스를 생성 후 코드를 다음과 같이 작성했습니다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //애플리케이션 전체 공유 (persistence.xml 참조) EntityManager em = emf.createEntityManager(); //한번 쓰고 버려야함, 쓰레드간 공유하지 않음 EntityTransaction tx = em.getTransaction(); //조회를 제외한 DML 작업시 필수로 사용 tx.begin(); try { Album album = new Album(); album.setName("album"); album.setPrice(10000); album.setArtist("artist"); em.persist(album); Book book = new Book(); book.setName("book"); book.setPrice(20000); book.setAuthor("author"); book.setIsbn("isbn"); em.persist(book); Movie movie = new Movie(); movie.setName("movie"); movie.setPrice(30000); movie.setDirector("director"); movie.setActor("actor"); em.persist(movie); em.flush(); em.clear(); //1번 String jpql = "select i from Item i where type(i) in (Book, Movie)"; List<Item> items = em.createQuery(jpql, Item.class).getResultList(); for (Item data : items) { System.out.println("data : " + data); } em.clear(); //2번 jpql = "select i from Item i where treat(i as Book).author = 'author'"; //SINGLE_TABLE에서는 되는데 JOINED에서는 안 먹힘 items = em.createQuery(jpql, Item.class).getResultList(); for (Item data : items) { System.out.println("data : " + data); } tx.commit(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); } finally { em.close(); } emf.close(); 1번의 경우에는 다음과 같이 정상적으로 동작합니다. Hibernate: /* select i from Item i where type(i) in (Book, Movie) */ select i1_0.Id, i1_0.DTYPE, i1_0.name, i1_0.price, i1_1.artist, i1_2.author, i1_2.isbn, i1_3.actor, i1_3.director from Item i1_0 left join Album i1_1 on i1_0.Id=i1_1.Id left join Book i1_2 on i1_0.Id=i1_2.Id left join Movie i1_3 on i1_0.Id=i1_3.Id where i1_0.DTYPE in('B','M') data : Book(author=author, isbn=isbn) data : Movie(director=director, actor=actor) 그런데 2번의 경우에는 다음과 같은 현상이 발생하고 있습니다. Hibernate: /* select i from Item i where treat(i as Book).author = 'author' */ select i1_0.Id, i1_0.DTYPE, i1_0.name, i1_0.price, i1_1.artist, i1_2.author, i1_2.isbn, i1_3.actor, i1_3.director from Item i1_0 join Book i1_2 on i1_0.Id=i1_2.Id where i1_2.author='author' 존재하지 않는 i1_1과 i1_3을 참조있어서 오류가 나는데 왜 이런 현상이 발생하는지 궁금합니다. 그와 별개로 SINGLE_TABLE 전략을 사용했을 때 2번을 실행하면 저같은 경우에는 다음과 같은 쿼리가 실행됩니다. Hibernate: /* select i from Item i where treat(i as Book).author = 'author' */ select i1_0.Id, i1_0.DTYPE, i1_0.name, i1_0.price, i1_0.artist, i1_0.author, i1_0.isbn, i1_0.actor, i1_0.director from (select * from Item t where t.DTYPE='B') i1_0 where i1_0.author='author' 그런데 강사님께서 제공해주신 pdf 파일에 보면 원래는 쿼리가 다음과 같이 실행된다고 말씀해주셨는데 select i.* from Item i where i.DTYPE = ‘B’ and i.author = ‘kim’ 제가 sql 실행했을 때와 강사님이 적어주신 sql이 다른 이유가 제 생각에는 하이버네이트 버전차이때문일것 같긴한데 혹시 제 생각이 맞는지 질문드리고 싶습니다. ※ 저는 하이버네이트 6버전을 쓰고 있습니다.

  • java
  • jpa
그냥곰 댓글 1 좋아요 0 조회수 496

kafka sink 생성 시 tasks state failed

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요 강사님! 강의 잘보고 있습니다. 강의시간 18:58에 sink 생성 후 status 확인 값에서 tasks.state 값이 failed라고 뜹니다. 그래서 connect 로그를 보면 아래와 같이 뜹니다. [2023-05-02 00:04:12,636] ERROR [my-order-sink-connect|task-0] WorkerSinkTask{id=my-order-sink-connect-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:196) org.apache.kafka.connect.errors.ConnectException: Tolerance exceeded in error handler at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:223) at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execute(RetryWithToleranceOperator.java:149) at org.apache.kafka.connect.runtime.WorkerSinkTask.convertAndTransformRecord(WorkerSinkTask.java:516) at org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:493) at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:332) at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:234) at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:203) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:189) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:244) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.kafka.connect.errors.DataException: JsonConverter with schemas.enable requires "schema" and "payload" fields and may not contain additional fields. If you are trying to deserialize plain JSON data, set schemas.enable=false in your converter configuration. at org.apache.kafka.connect.json.JsonConverter.toConnectData(JsonConverter.java:328) at org.apache.kafka.connect.storage.Converter.toConnectData(Converter.java:88) at org.apache.kafka.connect.runtime.WorkerSinkTask.lambda$convertAndTransformRecord$4(WorkerSinkTask.java:516) at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndRetry(RetryWithToleranceOperator.java:173) at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:207) ... 13 more 구글링 해봐도 원하는 답변들이 없어 남겨봅니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
mj Song 댓글 2 좋아요 0 조회수 1182

상품등록 조회가 되지 않아요

미해결

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

[질문 내용] 여기에 질문 내용을 남겨주세요. 회원가입과 회원 조회는 문제없이 되는데 상품등록은 작성은 되지만 db에 담기지도 않고 그래서 조회도 안됩니다 ㅠㅠ 상품등록 조회 영상 코드가 잘못인가 하고 복붙을 했는데도 안됩니다 ㅠㅠ 무엇이 문제일까요??ㅠㅠ] 제가 지금 야생형으로 따라 하고있어서 아무것도 몰라서 어느부분이 문제인지 알수없어서 남겨봅니다

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

페치 조인 한계 - 둘 이상의 컬렉션은 페치 조인 할 수 없다

해결됨

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

안녕하세요, '페치 조인 2 - 한계' 강의를 듣던 도중, 잘 이해가 되지 않는 부분이 있습니다. '페치 조인 2 - 한계' 강의 (6분 44초) 에서 다음과 같이 '둘 이상의 컬렉션은 페치 조인 할 수 없다' 라고 말씀해주셨습니다. 제가 궁금한 점은, 이후 ' 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화' 강의에서, /api/v3/orders api에서 아래와 같이 페치 조인을 하는 예시를 설명해주셨습니다. 해당 api를 통해 페이징이 불가능하다는 것은 이해하였고 BatchSize를 통해 페이징이 가능한 형태로 최적화하는 방법은 이해하였습니다만, 둘 이상의 컬렉션을 페치 조인 할 수 없다고 말씀하신 부분은 잘 이해가 되지 않아서 이렇게 질문을 드립니다. 말씀해주신 둘 이상의 컬렉션이 다른 의미를 내포하는 것인지, 아니면 둘 이상의 컬렉션을 페치 조인할 수는 있지만, 최대한 지양해야 하는 것으로 이해하면 될지 궁금합니다. ' 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화' 강의 내용이지만, 페치 조인의 한계에 대한 의문점이라서 본 강의에 질문을 드립니다. 감사합니다.

  • java
  • jpa
yoongdoo0819 댓글 1 좋아요 0 조회수 549

인기 태그

인프런 TOP Writers

주간 인기글