월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.find 시 쿼리문 2번 수행
영속성 컨텍스트 2 강의의 약 7분 쯤 em.find를 2번하게 되어도 1차캐시 조회에 의해 쿼리문이 한번만 출력된다고 하셨는데저는 2번 출력되네요.. 문제가 뭘까요 https://drive.google.com/drive/folders/1rLlWTlGVWyFRoL-HXbvyWREnpHBC7OBe?usp=sharing 추가로 질문이 하나 더 있는데강의에서는 JPAMain 자바 파일의 try문을 수행하면 db에 바로 저장이 되는데저는 저장이 안됩니다.이것도 한번 확인 부탁드립니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 기능 한계로 인한 즉시로딩 질문
만약강의 17분쯤에 설명하는 프록시 객체 한계에 대해서 궁금한 부분이 있습니다. 즉시로딩이 적용되어 JOIN을 통해 Member의 값을 불러오게 되면 조회에서만 그치지 않고 Member 프록시 객체에 Injection이 추가로 되는지 궁금합니다!
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 소개 - 1차 캐시와 동일성 보장 에서 질문이 있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요, 영한님! 영한님 수업을 새겨듣고 있는 수강자입니다!다름이 아니라, JPA 소개파트의 "1차 캐시와 동일성 보장(15분 30초경)" 에서 말씀하신 동일성이 "각 Entity가 참조하는 메모리 주소가 같지 않아도 값을 통해 같음을 보장"한다는 뜻과 일맥상통한 내용인가요? Java의 equals에 대해서 공부하다가 동일성이란 단어가 동일한 의미로 쓰이는지 궁금해서 여쭈어봐요! 만약에 같은 뜻이라면, "같은 엔티티를 반환한다"는 말을 "참조하는 메모리 주소가 같지는 않고, 값만 같은 엔티티를 반환한다"로 이해해도 될까요??질문 들어주셔서 감사합니다.오늘도 좋은 하루 보내세요!!
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
상속관계가 두 개 이상일 때 매핑 질문
안녕하세요.하나의 엔티티가 두 개 이상의 상위 엔티티에 속하는 경우 어떻게 구현해야 하는지 질문드립니다.예를 들어서 사과라는 엔티티가 과일에도 속하고 음식에도 속한다고 했을 때,DB에서는 사과엔티티를 과일테이블과 음식테이블이라는 두 개의 싱글테이블의 행으로 표현할 수 있지만 객체모델링에서는 사과가 반드시 하나의 엔티티 클래스를 상속해야하기 때문에 어떻게 모델링해야 하는지 모르겠습니다.감사합니다.
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
DTYPE을 코드로 표현하는 경우
안녕하세요.DiscriminatorColumn, DiscriminatorValue 를 이용하여 DTYPE을 자동으로 insert하는 기능이 참 편리해보이는데요.만약에 예시에 나온 Item의 관리가 객체 이름이 아닌 일련의 문자열 ItemCode로 이루어진다면, 그리고 ItemCode를 DB 등에 따로 저장하여 사용하고 있다면 DiscriminatorValue에 그 값을 넣어줄 수 있는 방법이 있을까요?만약 DB에서 조회하는 것이 불가능하다면 DB가 아니라 코드로 정의를 해놓는다면(Enum등으로) 참조값을 넣어줄 수는 있을까요?감사합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
변경감지 시 참조키 업데이트 질문드려요
변경감지를 통해서 데이터들을 업데이트하려고 하는데요.그 중에 외래키도 업데이트를 시키려고 하는데 변경감지로 잡히지가 않아서요.외래키는 변경감지에 안걸리나요?아래 예제입니다. class Team () {String teamName; @ManyToOne()@JoinColumn(name = "MEBER_SEQ")Member member;} Member newMember = new Member();team.setMember(newMember);
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
다대일 단방향으로 save시
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 질문 드리고 싶은건 팀과 멤버 엔티티를 DB에 저장하기 위한 상황입니다.한번의 save 코드로 두번의 INSERT 쿼리를 내보내겠습니다. 팀 save, 멤버 save (멤버 ManyToOne)팀.add멤버(멤버) 후 팀 save (팀 OneToMany, 멤버 ManyToOne)멤버.set팀(팀) 후 멤버 save (멤버 ManyToOne)이런 3가지 방법이 가능할 것 같습니다.3번의 경우에는 멤버에만 @ManyToOne으로 관계지정하고 cascade = CascadeType.ALL 옵션을 추가해서 팀에도 쿼리가 발생하게 되는데요이런 예시(Case. 3)가 웹에는 흔하지 않다는게 의문입니다.만약 cascade 옵션을 이렇게 사용해선 안되는 것인지. (자식엔티티로 부모 엔티티를 관여하는) 혹은 권장되는 방식인지.또 여러개의 테이블이 산재된 현업에서 어떤 방식이 권장되는지.이때 판단 기준은 어때야 하는지 궁금합니다.혹시 이런 내용을 책에서 다루고 있거나, 다른 강의에서 다루고 있다면 추천해주시면 구입해서 공부하고 싶습니다.항상 학생들을 위해 힘써주시고 좋은 강의 만들어주셔서 감사합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
메인 메서드 실행시 NoSuchMethodError 해결방법 공유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)질문은 아니지만 해결방법이 안 올라온 것 같아 올립니다.2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]강의 초반에 Member 클래스를 만들고 DB연결, 테이블 생성까지 했는데 메인메서드를 실행하면 NoSuchMethodError 오류가 나는 경우가 있습니다.커뮤니티 게시판을 찾아봤는데 질문은 있고 답변은 없는 것 같아 해결방법 공유합니다.저같은 경우는 h2버전과 스프링 부트 버전이 맞지 않아 그런 줄 알고 h2와 스프링 부트 버전을 달리해가며 설정해봤는데 알고보니 hibernate 버전 충돌 문제인 것 같습니다.pom.xml파일에서<!-- JPA 하이버네이트 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.15.Final</version> </dependency>로 하이버네이트 의존성 설정을 해주면 인텔리제이가 자동으로 하이버네이트 라이브러리를 다운받는데 이때 hibernate-commons-annotations의 버전과 hibernate-core의 버전이 호환되지 않는 경우가 있는 것 같습니다. 저는 처음에 hibernate-commons-annotations 버전이 5.0.4, hibernate-core가 5.6.15 final로 되어있었는데 의존성 설정 갱신 이후 hibernate-commons-annotations 버전이 5.1.2 final로 바뀌며 정상 실행 됐습니다.인텔리제이가 충돌하는 라이브러리를 다운받기도 하는 것 같습니다.
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
즉시 로딩과 지연 로딩 강의 2:30 NullPointerException 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] package hellojpa; import javax.persistence.*; public class JpaMain { 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("teamA"); em.persist(team); Member member1 = new Member(); member1.setUsername("member1"); member1.setTeam(team); em.persist(member1); em.flush(); em.clear(); Member m = em.find(Member.class, member1.getId()); System.out.println("m = " + m.getTeam().getClass()); tx.commit(); } catch (Exception e) { tx.rollback(); e.printStackTrace(); } finally { em.close(); } emf.close(); } } 위와 같이 강사님의 코드를 그대로 받아쓰고 실행을 하였습니다. java.lang.NullPointerException at hellojpa.JpaMain.main(JpaMain.java:30) Jun 23, 2023 10:53:10 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test]위와 같은 에러가 발생하였습니다. team 객체를 생성하였는데 왜 NullPointerException 에러가 발생한 것일까요? 답변주시면 감사하겠습니다!!
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Flush 1차캐쉬 내부 동작과정
1차 캐시가 다 유지된다고 하셨는데 한 가지 의문이 들어 정확히 알고 싶어 질문 올립니다. 말씀하신 그대로 1차 캐시의 모든 정보가 유지가 되는건지 아니면 아래의 과정이 맞는건지 궁금합니다.memberA를 영속성 컨텍스트에 저장을 하고 이후 memberB를 em.persist() -> flush를 했을 때 Entity는 변경후 데이터 , 스냅샷이 변경 전 데이터가 들어가고 commit을 하면 하면 스냅샷이 변경 후 데이터로 변경되고 rollback을 하면 다시 Entity가 변경 전 데이터로 돌아가는 것이 아닐까 하는 생각이 들었습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Json으로 말아넣는다는 것 질문
자바 ORM 표준 JPA 프로그래밍 11분 부터 나오는 내용중 데이터의 양이 많아지면 테이블을 단순하게 유지한다면서Json으로 말아넣는다는데 이게 어떤 방식을 의미하는 것인가요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
조인하고 조회할때 리턴 타입에 대해서 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용] String query = "select t.memberList from Team t"; em.createQuery(query, Member.class).getResultList();member entity로 지정시 오류남 String query = "select mList from Team t join t.memberList mList"; em.createQuery(query, Member.class).getResultList(); 정상 작동 하는데 위의 쿼리문과 밑에 쿼리문이 무엇때문에 Member entity로 반환이 되는지 안되는지를 알고싶습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA ? hibernate?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 제가 알고있는 개념으로는 javax.persistence.* <- 이 패키지들이 jpa이자 인터페이스이고 hibernate가 이것의 구현체라고 알고 있는데hibernate없이 javax.persistence.* 이 패키지들의 기능들만 사용해서 jpa개발이 가능 한가요? 그렇다면 인터페이스로 구현체 없이 개발했다는것인데 뭔가 제가 생각한 말의 어순이 안맞는 것 같아서 지적 좀 부탁드립니다..
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
ManyToOne에 MappedBy기능이 없는이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@JoinColumn(insertable = false, updatable = false)를 사용하는 부분에서 궁금증이 생겼는데@ManyToOne에 mappedBy가 없는 이유는 실무에서 주로 ManyToOne을 연관관계의 주인으로 사용하기 때문에 기능을 추가 안한거라고 생각하면 맞을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
버전관련해서 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예 [질문 내용]여기에 질문 내용을 남겨주세요. java 11버전을 사용하고 있고 pom.xml 파일과 persistence.xml은 강의내용을 복붙했습니다.버전 문제인 것 같은데 해결 방법이 있을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
본강의와 JPA서적
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/[질문 내용]수업을 시작하기 이전에 선생님께서 제작하신 책도 나와있던데, 강좌 소개를 보면 본 강의를 메인으로 하고 책은 참고로 하면 좋다, 깊게 들어가지 않는다면 필요는 없다라고 들었었습니다. 사실 신입인 터라 jpa를 들어서 바로sql을 쓸지 잘 모르고, 그저 어떻게보면 제 목적은 jpa를 배우면서 좀 더 sql을 잘하고 싶다는 마음으로 등록한건데 이해력도 조금 부족해서 뭔가 보조하는 게 없으면 쉽지않습니다 ㅎㅎ;;; 그래서 강의를 들으면서 이책과 함께 또 공부를 하면 이해하기 더 편한지 그 부분이 궁금합니다. 물론 제가 연차가 쌓이고 나면 늦든 빠르든 구매는 해볼 생각입니다
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티로 변경 후 업데이트 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 강의 후반부에 엔티티로 바꾸고 업데이트 치는 부분은 넘어가셨는데 업데이트 하는 방법이 알고싶어서 질문 드립니다. List<AddressEntity> addressHistory = member1.getAddressHistory(); for (AddressEntity addressEntity : addressHistory) { if(addressEntity.getId()==2){ addressEntity.setAddress(new Address("up","up","up")); } } em.persist(member1); 특정 키를 가진 ADRESS를 업데이트 하려고 하면 위의 방식으로 하는게 맞는건가요? 뭔가 다른방법이 있는지 궁금합니다..
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트가 1순위인건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영속성 콘텍스트에 값이 먼저 들어가있는getReperence로 프록시 호출(호출이라고 하는게 모르겠지만) 하고 초기화를 먼저 진행하면 find로 조회해도 프록시로 반환해주는걸로 봤는데그렇다면 영속성컨텍스트에 먼저 들어간 (프록시 던지 아니면 실제 엔티티던지)것을 반환한다고 보면 되는건가요?그리고 JPA는 ==을 무조건 보장해준다고 했는데 (같은 영속성 컨텍스트에 있을때) 특별한 이유가 있는건가요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
PK가 여러개로 구성되었을 경우 자동 키 생성전략
안녕하세요.테이블의 칼럼이 A, B, C 이렇게 있을 때A, B에 따라 C가 자동으로 증가되어야 하는 경우 어떻게 해야 할까요?새로 insert되는 객체의 A와 B가 동일한 경우 C의 최대값을 가져와서 +1을 해야 하고다를 경우 C가 1부터 시작해야 합니다.이런 경우 JPA를 통해 해결할 수 있을까요?현재는 수동으로 계산을 하는 로직을 매번 넣고 있습니다.감사합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
hibernate 6 부터는 항상 distinct 가 적용된다고 합니다. 따라했는데 결과가 다르게 나와서 한참 해맸네요
원문입니다.DISTINCTStarting with Hibernate ORM 6 it is no longer necessary to use distinct in JPQL and HQL to filter out the same parent entity references when join fetching a child collection. The returning duplicates of entities are now always filtered by Hibernate.Which means that for instance it is no longer necessary to set QueryHints#HINT_PASS_DISTINCT_THROUGH to false in order to skip the entity duplicates without producing a distinct in the SQL query.From Hibernate ORM 6, distinct is always passed to the SQL query and the flag QueryHints#HINT_PASS_DISTINCT_THROUGHhas been removed.