월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨자바 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.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
team이 존재하지않는 member가 존재할때 nullpointerExc
Team team = new Team(); team.setName("TeamA"); em.persist(team); Team team2 = new Team(); team2.setName("TeamB"); em.persist(team2); Member member1 = new Member(); member1.setUsername("회원1"); member1.setTeam(team); em.persist(member1); Member member2 = new Member(); member2.setUsername("회원2"); member2.setTeam(team); em.persist(member2); Member member3 = new Member(); member3.setUsername("회원3"); member3.setTeam(team2); em.persist(member3); Member member4 = new Member(); member4.setUsername("회원4"); member3.setTeam(null); em.persist(member4); em.flush(); em.clear(); List<Member> lazyLoadingResult = em.createQuery("select m from Member m ", Member.class).getResultList(); for (Member member : lazyLoadingResult) { System.out.println("member = " + member.getUsername() + ", " + ((member.getTeam().getName() == null) ? "null" : member.getTeam().getName())); }위와 같이 team이 존재하지 않는 Member 데이터를 추가한 뒤에 inner join을 하게될 경우nullpointerException이 발생합니다.객체 탐색을 활용하면 발생하게 되는 문제로 이해는 했지만 JPQL을 사용하였을 때 이에 대한 해결책으로는 어떤 게 있을까요?3항연산자로 사용 처리를 해보려고 하였으나 객체 탐색이기 때문에 처리가 되지 않고 있습니다.case문을 활용할 수 밖에 없을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
교재 구매 문의
안녕하세요. jpa 강의 듣고있는데요 jpa교재도 있더라구요. 근데 그 책이 좀 오래된것 같은데 지금 구매해도 상관없을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프로젝션 임베디드 타입(Address) 쿼리호출 안되는 문제
아래와 같이 쿼리를 구성했는데select쿼리가 나가지 않습니다.어디가 잘못되었는지 궁금합니다..//임베디드 타입 프로젝션(Address) Address address = new Address(); address.setCity("경기도 땡땡"); address.setStreet("땡땡동"); address.setZipcode("00000"); Product product = new Product(); product.setName("제발되라"); em.persist(product); Order order = new Order(); order.setOrderAmount(0); order.setAddress(address); order.setProduct(product); em.persist(order); em.flush(); em.clear(); em.createQuery("select o.address from Order o", Address.class) .getResultList(); 아래와 같이 mapped가 안됬다고 오류가 뜹니다..
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
print 출력이 안돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.print 행만 제대로 컴파일이 안되는 것 같은데 왜 그런걸까요... Hibernate: drop table if exists Member cascade Hibernate: drop table if exists Team cascade Hibernate: drop sequence if exists Member_SEQHibernate: drop sequence if exists Team_SEQ6월 16, 2023 6:58:10 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnectionINFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@404eca05] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.Hibernate: create sequence Member_SEQ start with 1 increment by 50Hibernate: create sequence Team_SEQ start with 1 increment by 506월 16, 2023 6:58:10 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnectionINFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@4832f03b] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.Hibernate: create table Member ( Team_ID bigint, id bigint not null, USERNAME varchar(255), primary key (id) )Hibernate: create table Team ( TEAM_ID bigint not null, USERNAME varchar(255), primary key (TEAM_ID) )Hibernate: alter table if exists Member add constraint FKknpbqg06nqr85nxx8lcw476y0 foreign key (Team_ID) references Team6월 16, 2023 6:58:10 오후 org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase beforeScriptINFO: HHH000476: Executing script '[injected ScriptSourceInputNonExistentImpl script]'Hibernate: select next value for Team_SEQHibernate: select next value for Member_SEQHibernate: /* insert for hellojpa.Team */insert into Team (USERNAME,TEAM_ID) values (?,?)Hibernate: /* insert for hellojpa.Member */insert into Member (Team_ID,USERNAME,id) values (?,?,?)Hibernate: select m1_0.id, t1_0.TEAM_ID, t1_0.USERNAME, m1_0.USERNAME from Member m1_0 left join Team t1_0 on t1_0.TEAM_ID=m1_0.Team_ID where m1_0.id=?6월 16, 2023 6:58:11 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stopINFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test]Process finished with exit code 0
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트 에러 질문
안녕하세요 스프링 부트 환경에서 JPA 를 쓸때 이해하지 못하는 에러가 나서 질문합니다.현재 서비스와 레포지토리 레이어를 분리해서 사용하고 있고, @Transactional 어노테이션은 레포지토리 클래스에만 적용해 놓은 상태입니다.우선 save 함수와 findOne 함수는 이런식으로 존재합니다.public void save(Lost entity) {em.persist(entity);} public Optional<Lost> findOne(Long id) {return Optional.ofNullable(em.find(Lost.class, id));} Lost 엔티티는 이런식으로 존재합니다 (더 많은 컬럼이 있지만 필요한 것만 적었씁니다)@Data @Builder @AllArgsConstructor @NoArgsConstructor @Table(name = "lost") @Entity @JsonIgnoreProperties({"organization", "postCodeType"}) public class Lost { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "lost_id") private Long id; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "lost_user_id", referencedColumnName = "user_id", insertable = false, updatable = false) @EqualsAndHashCode.Exclude @ToString.Exclude private User user; }근데 서비스 레이어에서 Lost result = lostsRepository.save(LostMapper.INSTANCE.toEntity(lostRequest)); System.out.println(lostsRepository.findOne(result.getId()).get().getUser());이런식으로 findOne을 해서 user 필드를 가져오려고 하면 null 이 뜹니다ㅠㅠ@ManyToOne(fetch = FetchType.EAGER)이 설정도 잘 해줬고, 커밋도 레퍼지토리에서 해서 그러면 user 필드가 채워져서 와야 할텐데 이해가 안됩니다..ㅠ @ToString.Exclude 문제는 아닌게 getUser 을 해서 봤을때도 null 이 뜹니다. 혹시 뭐가 문제일까요? findOne을 쓰는 다른 곳에서는 잘 동작하는데, 저렇게 save 를 한 직후에 save 한 엔티티 아이디로 findOne을 하면 조인한 다른 객체가 null로 뜹니다. 추가로 우선 해당문제는public void save(Lost entity) {em.persist(entity); em.flush(); em.refresh(entity); }이런식으로 바꿔서 해결했습니다.메커니즘이 이해가 안가서 질문드립니다!!감사합니다
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
트랜잭션 커밋시 영속 컨텍스트, 그리고 트랜잭션 커밋과 종료의 차이
트랜잭션이 커밋이 일어나면 영속 컨텍스트가 어떻게 되는지 궁금해서 질문드립니다. 비슷한 질문이 있어 해당 글의 답을 보니, "커밋되는 시점에는 영속성 컨텍스트를 삭제한다."라고 되어있습니다.그런데 어떤 블로그 글에서는 커밋되더라도 영속 컨텍스트의 1차 캐시는 남아있고, 쓰기 지연 SQL 저장소의 내용은 사라진다고 되어있습니다.Q1. 정확히 어떻게 되나요? 그리고 "컨텍스트의 삭제"의 정확한 의미가 이해가 되지않아서 이 부분도 궁금합니다!Q2. 영속 컨텍스트 자체가 삭제되는거라면, 커밋될 때 영속 컨텍스트의 삭제와 엔티티 매니저를 close()할 때 영속 컨텍스트가 닫히는것의 차이가 무엇인지 궁금합니다!Q3. 그리고 트랜잭션 커밋과 종료의 차이가 무엇인지 궁금합니다.찾아보니 "COMMIT을 수행하면 하나의 트랜잭션 과정을 종료하는 것이다"라고 봤는데, 워딩의 차이이지 결국 같은 의미인가요? 아니면 커밋하지않고 트랜잭션이 종료될 수 도 있는건가요?감사합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속 컨텍스트에서 flush가 발생하는 위치 혹은 순서
3강 영속성 관리를 공부하다가 flush에 관해 궁금한게있어 질문남깁니다.3강 강의자료에서 21페이지를 보시면 트랜잭션이 커밋될 때, flush가 발생하는것을 설명하면서 '2.flush'가 영속 컨텍스트에서 DB를 향하고있습니다. 그런데 23페이지 변경감지에서 flush가 발생하는것을 설명할때 그림을 보면, '1.flush()'가 바깥에서 영속 컨텍스트를 향하고있고, '4.flush'가 쓰기 지연 SQL 저장소에서 DB를 향하고있습니다. Q1. 전자(21페이지)는 flush가 한 번 발생하는데, 후자(23페이지)는 두 번 발생합니다. 둘 다 커밋할 때 발생하는건데 왜 차이가있는지 궁금합니다. 사실상 후자처럼 두 번 발생하는게 맞다고 보면 되나요? Q2. 변경감지 설명에서의 '1.flush()'가 바깥에서 영속 컨텍스트를 향하고있습니다. 이는 변경감지에서 가장 먼저 flush()가 발생한것인데, flush는 쿼리를 날리며 "영속성 컨텍스트의 변경내용을 데이터 베이스에 반영"하는것이라고 배웠습니다. 그럼 결국 더티체킹이 일어나기 전, 쿼리가 처음부터 날라가는건가요? 그렇다면 사실상 쿼리가 두 번 날라가는 건가요?아니라면 이 '1.flush()'는 뭔가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@JoinTable @JoinColum 옵션을 통한 외래키 선언 순서
M:N 관계를1:M과 M:1 관계로 풀어내는 @JoinTable 애노테이션의 옵션중joinColumns와 inverseJoinColumns를 지정하는 구분 기준은 따로 없고두개의 선언을 서로 다르게 선언해도 상관없나요??@JoinTable(name = "CATEGORY_ITEM" , joinColumns = @JoinColumn(name = "CATEGORY_ID") , inverseJoinColumns = @JoinColumn(name = "ITEM_ID") )@JoinTable(name = "CATEGORY_ITEM" , joinColumns = @JoinColumn(name = "ITEM_ID") , inverseJoinColumns = @JoinColumn(name = "CATEGORY_ID") 위와 같이 순서를 다르게 지정하면 JoinTable의 컬럼의 순서만 변경 되는것인가요?두 컬럼의 순서는 인덱스에만 영향을 줄 뿐 데이터 조회결과에는 영향을 미치지 않을거라 예상되는데 맞나요?따라서 다이어그램의 순서상으로 따진다면 CATEGORY_ITEM을 기준으로 ITEM테이블이 먼저 나오고 반대방향이 CATEGORY으로 이해하려고 하였으나 그 반대인거 같습니다.선생님께서 선언하신 순서는 어떤 기준대로 순서를 이해 해야 할까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Team엔티티의 members선언시 초기화 이유
ArrayList로 List 선언과 동시에 초기화 하는 이유에 대해서 왜 초기화를 하는지?어떤 예외상황을 대비해서 초기화를 하는지 궁금합니다.보통 마이바티스에서는 vo객체에 선언할 때 선언과 동시에 초기화 하지 않고 사용했던거 같아서 질문 드려요어떤 상황에서 add할때 null포인트가 뜨는지 궁금하네요직접 선언만 해놓고 초기화 하지 않고 add해봤는데 null포인트 오류는 발생하지 않고있어서 궁금합니다!!그리고 추가적으로 위와 같이 초기화할 수는 없는건가요?어차피 값이 세팅될 때는 getMembers에 의해서 members를 가져온 후에 add메소드를 통해 추가하는거니까 값을 추가할때만 초기화를 하도록 설정하면 안되는지요..?이렇게 해보면 결과적으로 값이 추가가 되지 않더군요... 그 이유도 잘 모르겠습니다
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
CascadeType.ALL과 orphanRemoval=true를 함께 사용하는것에 대한 질문
안녕하세요영속성 전이와 고아객체에 대해 복습하다가 궁금증이 생겨 질문 올립니다. 영속성 전이는 부모 엔티티의 생명주기에 종속적인 자식 엔티티의 상태변화를 같이 처리해주는 것으로CascadeType.ALL 옵션은 부모 엔티티를 저장하거나 삭제, 변경 할 때, 자식 엔티티 역시 같이 저장하거나 삭제, 변경 해주는 걸로 알고 있습니다.그리고 orphanRemoval=true 고아객체는 부모 엔티티와의 관계가 끊어지면 자동으로 삭제되는 자식 엔티티를 의미한다고 하였습니다. 여기서 궁금증이 생겼습니다.CascadeType.ALL 를 설정하면 부모 엔티티가 자식 엔티티의 생명주기를 처리해주는데orphanRemoval=true 을 같이 사용해 자식 엔티티가 삭제되는 것이 중복될 텐데왜 이 두옵션을 같이 사용하는지 잘 모르겠습니다..검색을 해봐도 두 옵션을 같이 사용하는 경우에는부모 엔티티와 관계된 자식 엔티티의 생명주기를 부모 엔티티에서 한 번에 관리할 수 있다고 하는데어차피 CascadeType.ALL 옵션하나로 부모 엔티티가 자식 엔티티의 생명 주기를 관리하는데어떤 이유에서 같이 사용하는 건가요 ??
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@Embedded 유무 차이
Address에 @Embedded 붙히든 안붙히든 h2에 테이블에는 차이가 전혀 없는데 어떻게 이해해야 할까요? 쓰고 안쓰고의 차이가 뭘까요?