묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
fetch 조인, 엔티티 그래프 질문입니다.
안녕하세요. 강의를 들으며 조금 불분명한 부분이 있어서 질문 남깁니다. 가령 멤버들의 팀을 조회하는 쿼리를 작성한다면 우선 팀 전체를 조회하는 쿼리가 실행되고 각 팀이 자신들의 멤버를 조회하는 쿼리가 전체 팀의 수 만큼 발생될것 같습니다.(N+1문제) 이런 경우에는 오히려 즉시로딩을 사용하는게 맞아보이기에 fetch 조인 혹은 그래프 기능을 사용한다고 이해했습니다만 맞게 이해를 한것인지 잘 모르겠습니다. 조금만 더 설명해주시면 정말 감사하겠습니다. 좋은 하루 되세요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
cascade에 대해 질문드립니다.
복습을 하던 중 궁금한게 생겼습니다! 고아객체는 OneToMany, OneToOne 에서만 가능하다고 하셨습니다. 이 부분은 고아객체라고 이름 붙여진 이유를 생각해보면 바로 이해가 갑니다. cascade는 어디에서만 가능하다라고 딱 정해져있다고 말씀하시지 않으셨습니다. parent가 child를 add 했을 때에 parent만 올려도 그 list안의 child 까지 다 영속성컨텍스트에 올가가게 된다고 하셨습니다. 그렇다면 OneToMany에서만 쓰이는 것이 아니라면, member(many)가 setTeam으로 team(one)을 정한 다음에 member를 올려도 team도 같이 올라가게되는 것이 맞나요 ? 그렇다면 각기 다른 member1,2 두 명이 같은 팀을 setTeam하였다고 가정할 때 cascade를 수행하게되면 우선적으로 수행한 member (many)로 인해 team(one)이 올라가게되고, 후자의 member가 올라갈 때에는 team은 이미 1차 캐쉬에 있으므로 건너뛰게 되는 것인가요 ?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA와 ORM관련 질문 드립니다 !
안녕하세요.. JPA를 배우면서 의문이 들어 질문 드립니다. JPA 그리고 ORM을 사용하는 이유가 쿼리문을 직접 짜지 않아도.. 혹은 몰라도 객체로서 접근하여 데이터를 가져오는 것이 가능하다는 것과 생산성에 있다는 말씀 하셨습니다. 하지만 제가 JPQL를 배우면서 느낀건 JPQL이지만 똑같이 쿼리를 짠다는 느낌이 들어서요... 그렇다면 특정 조건으로 데이터를 가져올 경우, JPA가 객체지향적으로 조금 조율된 쿼리문일뿐. 쿼리를 짜야 한다는 면에서는 Mybatis 와 똑같은 느낌이 아닐까... 라는 생각을 하게 되어서.. 만약 대형 프로젝트에서 복잡한 쿼리문이 대다수인 경우 차이점을 못느끼지 않을까 생각합니다. 해당 부분에 대해서 어떻게 생각하시는지 궁금합니다 ! 그렇다면 쿼리문을 모르고 순수 객체나 함수로서 데이터를 가져올수 있는 수준까지 지원이 안되는 것인지도 궁금합니다 !!
-
미해결스프링 프레임워크 핵심 기술
Validator 질문있습니다.
안녕하세요 Validator 수업을 듣다가 궁금한게 생겼습니다. EventValidator 클래스에 support 메소드는 언제 쓰이는건가요? 강의나 스프링 문서를 보면 Parameter로 들어오는 클래스를 검증할 수 있는지 확인하는 것이라고 되어있는데요. 막상 AppRunner 클래스에는 validate 메소드만 사용하는 것 같습니다. 혹시 이건 어떻게 사용된건지 알 수 있을까요?? 너무 쉬운 질문 드려서 죄송합니다ㅠ
-
미해결실전! Querydsl
Querydsl과 jpql을 선택하는 차이가 궁금합니다.
드디어 querydsl을 배우고있네요! 제가 이해하고 있기로는, jpa에서 단순히 PK값으로 find()만 하는것이 아니기 때문에 여러가지 조건으로 검색하는 쿼리를 위해 jpql이 존재하는 것이고, jpql로 해결하기 어려운 동적쿼리나 더욱 복잡한 쿼리를 해결하기 위해 querydsl이 필요하다고 이해하고 있습니다. 그런데 실무에서 개발을 할 때 스프링 data jpa가 제공하는 기능이외에 필요한 내용들은 모두 querydsl로 작성하면 되지않나요?? querydsl 이외에 jpql을 작성해야하는 경우가 존재하는 것인지 아니면 querydsl과 jpql의 차이를 더욱 이해하기 쉽게하기위해 두가지 상황을 모두 보여주는 것인데 제가 착가하는 것인지 궁금합니다. 01. 실무에서 querydsl과 jpql을 같이 사용하나요?? 02. jpql을 함께 사용 한다면, 같이 사용해야하는 이유는 무엇인가요?? (querydsl을 사용하면 jpql로 만들수 있는 모든 쿼리를 다 만들수 있지않나 생각됩니다.)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Member와 Item에 저장 할 때 다른 이유가 있나요?
Member 저장 ==========> public void save(Member member) { em.persist(member);} Item 저장 ==========> public void save(Item item) { if (item.getId() == null) { em.persist(item); } else { em.merge(item); }} 위와 같이 Member/Item 저장 방식이 다른 이유가 있나요? 답변 부탁드립니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
1:1매핑시 한테이블을 여러컬럼이 참조합니다
모든이미지는 이미지테이블에 저장을하고, 헤더라는 테이블에서 이미지의 아이디를 저장하는데 이미지가 3개일경우 jpa설계를 어떻게해야 하나요? 헤더테이블의 정보가 저장될때 이미지도 같이 저장되고, 헤더정보에 이미지키가 있어서 연관관계주인을 헤더테이블로 잡았습니다. 첨부한이미지와같이 하는게 맞나요?
-
해결됨스프링 데이터 JPA
jpa 이점중에 동일성보장이 왜 장점인지 자세히 알고싶습니다..
강의내용중에 동일성보장에 대한 장점을 듣고 정확히 어떤 사례에 이점인지 궁금하여 구글링을 해봤는데 시원하게 원하는 내용을 찾지 못하였습니다. ㅠㅠ 어떤 상황에서 동일성보장에 대한 장점을 이해할수 있을까요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문과 주문상품에만 생성 메서드가 있는 이유는 뭔가요?
다른 엔티티들과 달리, 주문과 주문상품은 상태값 외에는 바뀔일이 없기 때문에 생성 메서드를 사용한게 맞는지 궁금합니다. (사실 이 부분도 의문입니다. 다른 엔티티들에도 유지보수를 위해 생성 메서드를 사용하는게 맞지 않을까 싶습니다.) 예제에서 주문과 주문상품에서도 @Setter를 사용하고 있기에 언제든 값이 변경될 수 있는 점 때문에 제가 생각한게 틀린건지 맞는건지 잘 모르겠습니다.
-
해결됨실전! 스프링 데이터 JPA
복합키 맵핑에 대해 질문드립니다
안녕하세요 권영한님 강의 너무 재미있게 잘 보고 있습니다! 😁 복합키 맵핑을 찾아보니 여러방법들이 있더라구요~ 영한님은 복합키 맵핑을 어떤 방법을 사용하시는지 질문 남깁니다.
-
미해결스프링 프레임워크 핵심 기술
리소스 질문 입니다
안녕하세요 리소스 강의 중 질문입니다. ApplicationContext로 가져온 리소스 타입은 기본적으로 WebApplicationContext 타입으로 나오게 되는건가요? 어떤 prefixf를 붙이지 않았을 때?? 근데 궁금한게 ServletContextResource는 왜 나오는건지 궁금합니다. 스프링 API를 봤을 때 ApplicationContext와 관련이 없어 보입니다ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
merge 와 dirty check 질문
안녕하세요. 변경감지와 병합 챕터를 보고 질문드립니다. 말씀하신 내용중에 "merge 는 모든 필드를 업데이트하고, dirty check 는 변경된 부분만 업데이트하기때문에 dirty check 를 사용하는게 좋다" 라는 내용이 있는데요. 그래서 테스트를 좀 해봤는데 dirty check 로 update 쿼리가 날아가는 경우에도 모든 필드에 대한 update 쿼리가 날아가더라고요. 결국 실행되는 쿼리 자체는 merge 와 dirty check 가 동일한거같은데요. 그래서 제가 정리한건 "merge 보다 dirty check" 라기보다는 "기존 엔티티를 수정(update) 할때는 신규 객체를 만드는게 아니라 기존 엔티티를 찾아와서 하자" 인데, 이렇게 이해해도 될까요? + 조금 더 찾아보니까 하이버네이트에서 @DynamicUpdate 애노테이션을 지원하고있는데 이 애노테이션은 실무에서 적극적으로 사용하는지도 궁금합니다. 감사합니다.
-
미해결스프링 시큐리티
강의 PPT 관련 질문
안녕하세요~ 강의 잘 듣고 있는 사람입니다. 강의를 듣다보니 HTTP Basic 부분의 강의가 PPT 에는 나와있는 것 같은데, 강의에는 건너뛰고 Form 인증 부분부터 나오더라구요~! 굳이 할 필요가 없어서 생략하신 걸까요? 좋은 강의 만들어주셔서 감사합니다!
-
미해결실전! 스프링 데이터 JPA
Unable to access lob stream 오류가 발생합니다.
다음과 같이 AccountRepository 인터페이스를 생성해 사용하는데, findByNickname 메소드에 대해 Unable to access lob stream 오류가 발생합니다. 검색해보니 맨 위 사진과 같이 Repository에 @Transactional을 추가하라는데, Clob이나 Blob이 포함된 엔티티는 해당 어노테이션을 반드시 사용해야 하는 것인가요? 혹시 맞다면 왜 그런건가요?
-
해결됨스프링 프레임워크 핵심 기술
다음 강의 수강 질문
유튜브에 올리신 강의 순서 영상 잘 봤습니다! 1. 유튜브 영상 댓글들을 보니 20%할인 내용이 있어 확인해보니 이메일, 인프런 알림, 결제 시 자동으로도 할인이 적용되지 않는데 기간이 끝났나요?? 2. 스프링 MVC와 스프링 부트 개념과 활용 중 어떤 강의를 먼저 듣는게 좋을까요? 영상에서는 MVC이고 댓글에는 '뭐 그대로 하나 선택하라면 일단 스프링 부트?' 라고 하셔서 고민이 됩니다. 스프링부트 교육과정(?)에 스프링 MVC, 데이터, JPA 같은 내용이 있어 스프링도 다 배우기전에 들어도 될지 모르겠네요ㅜ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
다대다 관계 시 insert 질문입니다.
안녕하세요 영한님! 강의 들으면서 개인적으로 작은 프로젝트를 하나 만들어 보고 있습니다. 다대다 관계 시 insert 방법이 궁금합니다. 아래와 같이 erd가 구성되어 있습니다. 회원 테이블, 상품 테이블 그리고 회원이 찜한상품 테이블 총 3개가 있고 찜한상품 테이블이 회원과 상품 테이블을 연결하는 연결테이블입니다. entity는 테이블과 같이 총 3개를 생성했습니다. (@ManyToMany는 사용하지 않고 비식별관계로 만들었습니다.) 1) UserRepository를 생성해서 User를 저장하고 2) ItemRepository를 생성해서 Item을 저장하고 3) ItemLikeRepository를 생성하고 ItemLike 객체를 생성 후 저장된 User와 Item의 연관관계를 설정하고 저장 이렇게 3단계를 거쳐서 모든 데이터를 저장하고 있는데요. 연결테이블의 저장소인 ItemLikeRepository를 생성해서 저장을 해야 될까..? 라는 의문점이 듭니다. ItemLikeRepository는 save() 외에는 거의 사용할 일이 없을거 같은데 구지 생성을 해야 될까 생각도 들고.. 다대다 관계 저장 시 효율적인 방법이 있을까요?? 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
static에 관한 질문이 있습니다.
안녕하세요 강의를 시청하고 있는 학생입니다. 교수님께서 CreateMemberResponse와 CreateMemberRequest 클래스들을 static 으로 만드셨는데 혹시 어떤이유에서 static 선언을 하신건가요??? 항상 유익한 강의를 만들어주셔서 감사합니다
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
ManyToMany 관계 동작이 조금 어렵네요..
강의를 들으면서 토이 프로젝트를 진행중에 있습니다! 사용자(Account)가 평소 여러 주제의 태그(Tag) 중 관심 있었던 주제의 태그를 프로필에 등록하는 기능을 구현 중에 있으며, Account 라는 엔티티와 Tag라는 엔티티가 AccountTag 라는 엔티티로 각각 1:N 매핑된 형태로 N:M 관계를 표현했습니다. 태그 생성 기능은 Gist과 같이 작성했는데, 사용자에서 특정 관심 태그를 삭제하는 remove 동작을 어떻게 구현해야 할 지 감이 잘 오지 않습니다.. 정리하자면 Tag는 그대로 보존하되, 연관된 AccountTag만을 삭제하고 싶습니다. 마음 같아선 영속성 전이를 통해 delete 동작 없이 List에서 remove만 해서 처리하고 싶은데 AccountTag 엔티티와 연관된 객체가 2개 이상이니 Cascade.ALL을 사용하기도 좀 그래서 이런 경우엔 보통 어떻게 처리를 하는지 궁금합니다!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
Entity 객체에 대한 영속화를 시킨다는 의미에 대한 질문입니다.
안녕하세요. JPA - 영속성 컨텍스트1 강의를 듣고 난 뒤 궁금한 사항이 생겨 질문을 남깁니다. 위 학습 내용의 큰 개념 중 하나인 "영속성 컨텍스트"에 대해 비영속 상태의 Entity 객체(도메인 클래스)를 영속 상태로 변경하기 위해서는 JPA에서 제공하는 EntityManager#persist(entity) 메소드를 사용하면 된다. 라고 이해를 했습니다. 이외 Member member = EntityManager.find(Member.class, 100L); 같은 코드에서 조회되는 "member" 객체도 자동으로 영속 상태로 설정이 되어 EntityManager#find(class, primaryKey) 메소드가 반환하는 객체라고 이해를 하면 될까요? 이제 본격적으로 JPA에 대해 학습을 시작했습니다. 새로 접하는 기술에 대해 좋은 강의 만들어주셔서 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
계층구조 카테고리 하위 속한 모든 아이템 조회
안녕하세요.항상 모든 질문에 정성스럽게 답변하시느라 고생이 많으십니다. 그래서 질문하는게 조심스럽지만 제가 못보는 부분이 있을가 걱정되 또 질문을 하게 되네요 ㅎㅎ 혹시 만약 이 강의에서 처럼 Category 가 계층 구조로 되어있으나 Item과 일대다 구조되어있을때 특정 category 하위에 카테고리에 속한 모든 item 을 찾을때 어떤방식으로 많이 구현하시나요? 제가 생각한 방법은 서비스 레이어에서 카테고리 리파지토리를 통해 특정 category엔티티를 찾아온다.loop를 돌면서 child를 모두 로딩시키 면서 child id 를 리스트로 만든다 -> 아이템 리파지토리의findByCategoryIds와같은 메서드로 해당 id에 속한 모든 item를 찾는다. 조금더 깔끔한 방법은 없을까요 ? 양방향 관계를 줄이는게 좋지만 이상황에서는 양방향 관계를 걸어서 Category에서 one to Many로 item을 가지고 있다가 그 리스트를 로딩후 반환하는게 나을까요? 항상 정말 좋은 강의와 꼼꼼한 답변 감사하게 생각하고 있습니다.