묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
단건조회시 fetch를 이용했을때 쿼리개수와 성능이 궁금합니다.
long startTime = System.currentTimeMillis(); BoardResponse.Detail response = boardService.findBoard(board.getId()); long endTime = System.currentTimeMillis(); // then System.out.println(endTime - startTime);해당 코드에서 findBoard Service는 게시글의 힌트, 태그, 정답, 공감을 가져와 DTO의 변환을 거쳐 하나의 게시글을 단건조회하는 서비스입니다.다만 여러 케이스로 테스트했는데단순히 findById로 로직을 테스트를 하게되면 해당 findBoard는 60~90ms의 실행속도와 쿼리가 지연로딩으로 인해 5개가 나가지만JPQL을 통해 DTO를 직접 접근하는 식으로 바꿨을땐, 쿼리를 1개로 나가지만 실행속도가 250~290ms가 나오게 되는데 단건조회의 경우 fetchJoin이나 join+DTO 방식을 쓰는것보다 지연로딩이 있더라도 일반적인 findById를 사용하는것이 좋은지 여쭤봅니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 데이터 JPA 질문
@Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); return new JdbcMemberRepository(dataSource); return new JdbcTemplateMemberRepository(dataSource); return new JpaMemberRepository(em); }안녕하세요 위 코드를 JPA 사용할 때까지 계속 사용했는데 스프링 데이터 JPA 사용할 때는 왜 주석 처리 하는지 궁금합니다. 좋은 강의 해주셔서 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Entity를 DTO로 변환시키기
김영한님 JPA 강의를 듣다가 1장 마지막 부분 쯤에 Entity를 그대로 사용하지 말고 데이터를 전송할 때에는 DTO를 이용하라고 하셨는데, 테이블 끼리 연관관계가 많은 것들은 어떻게 변환시키나요? 가장 궁금한게 A에 List<B>,List<C>,List<D> 객체를 가지고 있는데 A의 DTO를 만든다고 한다면 B,C,D를 각자 또 BDTO,CDTO,DDTO 로 옮기고 나서 ADTO에 담는건가요?? MapStruct를 사용하려고 하는데, 혹시 Entity를 DTO로 변환하는 좋은 방법이 있는지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 질문 드립니다
안녕하세요 강의를 듣다가 연관관계와 관련해서 질문이 있어 여쭤봅니다 만약 id(pk값) 이 4 인 Order의 OrderItem 리스트에서 count가 5인 값만 가지고 온다고 하면 이걸 가져올 수 있는 방법이 있을까요??
-
미해결
엔티티 매니저 없이도 DB 값 저장이 가능한건가요??
안녕하세요 영한님 강의로 JPA, SPRING DATA JPA 공부중인 초보 입니다 강의 하나를 완강했음에도 제가 아직 전반적인 구조에 대해서 이해를 못한건지 잘 이해가 안되는 부분이 있어서요.. 강의에서는 항상 엔티티 매니저를 통해 ~.persist() 로 DB에 저장을 해서 자연스럽게 저렇게 저장을 하는거구나 했는데 한 예제 프로젝트를 보니까 게시글 crud를 엔티티 매니저 일절 사용 없이 구현하더라구요 분명 스프링 데이터 JPA 를 이용한 예제인것 같은데 이게 원래 가능한걸까요?? 가능하다면 엔티티 매니저는 왜쓰는지도 궁금합니다 검색해봐도 감이 잘 안잡혀서요 ㅠㅠ 영한님 강의 레포지토리 예제 레포지토리
-
미해결실전! 스프링 데이터 JPA
복합키 식별관계 재질문입니다.
안녕하세요 김영한님! 자유주재로 올렸다가 요청해주신것에 따라서 질문으로 옮겼습니다. 현재 spring data jpa로 진행중이며 간략한 엔티티 및 관계 정의는 아래와 같습니다. Entity A [primary key A1, A2] / LectureType.class IdClassA [A1, A2] Entity B [primary key A1, A2, B1] / ManyToOne 단방향 관계, fetch lazy / ExamType.class IdClassB [IdClassA, B1] ex) BeforeAll로 A,B 더미 데이터를 저장 @Transactional @Test Brepository.findAll(); Brepository.findAll(); B Repository로 findall을 두번호출했을때 ( 다른 코드는 없습니다 ) identifier of an instance of B was altered from BIdClass@90c990a9 BIdClass@21b621d7 와 같이 예외가 발생했습니다. (키 값을 변경하려고 시도한적도 없습니다) 이와 관련해서 제가 개념을 잘못 익힌것인지, 검색 컨셉을 잘못잡은것인지 모르겠지만, 검색해도 잘 안나오더라구요. 각 엔티티의 주키를 string으로 직접 저장하는것 때문인지, 정확한 문제를 모르겠습니다. 공유 링크 : https://drive.google.com/file/d/1fnbHq8i1gcZC0eWFuCYolDnRzwOqio2x/view?usp=sharing 실행 방법 : spring data jpa 강의를 그대로 따라 한것이여서 강의에서 설명해주신것과 실행 방식이 다르지 않습니다. 다만 h2 데이터베이스를 별도로 다운받지 않고, 내장된 것을 사용중입니다. application.yml에 정보가 추가 되어 있습니다. 문제 발생되는곳 : test/java/study/datajpa/domain/exam/ExamTypeRepositoryTest 에서 exam_type_crud_check() 테스트 실행하면 에러 내용을 확인 할 수 있습니다. 하나더 궁금한 것이 있는데 id를 직접 넣어서 할때 강의해주신 Persistable<String>을 사용하면 된다고 하셨는데, 복합키 혹은 식별 관계에 있는 복합키일 경우 IdClass를 String 부분에 넣어주면 되는것일까요??