소개
게시글
고민있어요
2022.04.08 17:15
Express에서 Async 미들웨어의 에러 처리
- 0
- 0
- 317
고민있어요
2022.04.07 10:14
6 Rules of MongoDB Schema design
- 0
- 0
- 139
고민있어요
2022.03.20 22:02
7장 Learn-Sequelize 라우트와 요청 및 응답 형식
- 1
- 0
- 159
질문&답변
2022.03.06
사소한 내용 확인 부탁드립니다!
헉 번개같이 확인해주셔서 감사드립니다!
- 0
- 2
- 170
질문&답변
2021.09.30
Collection type으로 Set 대신 List를 사용하는 이유가 있는지요?
말씀해주신 내용을 확인해본 결과로, 혹시 찾아오신 분들께 도움이 될까 싶어 공유합니다.결론적으로는 말씀해주신대로 (양방향 연관관계 + List)를 취하면 불필요한 fetch가 없을 것 같습니다.1. 값 타입의 Collection을 변경시킬 경우 말씀대로 Set에서는 데이터가 로딩되고 List에서는 데이터가 로딩되지 않음을 확인하였습니다.2. 반면 1:N 단방향 연관관계에서는 Collection을 변경시킬 경우 Set, List 모두 데이터가 로딩됨을 확인하였습니다.(추가)3. 우리가 N:1 양방향 연관관계의 mappedBy에서도 Set에서만 데이터가 로딩된다는 내용의 Documentation을 찾고 확인하였습니다.다만 해당 자료는 최근 버전에서 없어지거나 이동한 것으로 보입니다.옛날 버전(Hibernate 4.3): https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch20.html#performance-collections-mostefficientupdate최근 버전(Hibernate 5.4): https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#best-practices-mapping-associations=====2022/05/29 수정 - Github Gist로 관련 파일만 옮겼습니다.제가 사용한 코드입니다 (https://gist.github.com/nightlyherb/00447a2ab196dcc3d5cd9e9b01f313ef)관련 부분DemoRunner.java결과===== Init Lazy Parent ===== Hibernate: select parent0_.id as id1_1_0_ from parent parent0_ where parent0_.id=? ===== Embeddable Child Set ===== Hibernate: select embeddable0_.parent_id as parent_i1_2_0_, embeddable0_.value as value2_2_0_ from parent_embeddable_child_list embeddable0_ where embeddable0_.parent_id=? ===== Embeddable Child List ===== ===== Entity Child Set ===== Hibernate: select entitychil0_.set_parent_id as set_pare2_0_0_, entitychil0_.id as id1_0_0_, entitychil0_.id as id1_0_1_ from entity_child entitychil0_ where entitychil0_.set_parent_id=? ===== Entity Child List ===== Hibernate: select entitychil0_.list_parent_id as list_par3_0_0_, entitychil0_.id as id1_0_0_, entitychil0_.id as id1_0_1_ from entity_child entitychil0_ where entitychil0_.list_parent_id=? ===== Bidirectional Mapping Child Set ===== Hibernate: select bidirectio0_.set_parent_id as set_pare3_0_0_, bidirectio0_.id as id1_0_0_, bidirectio0_.id as id1_0_1_, bidirectio0_.list_parent_id as list_par2_0_1_, bidirectio0_.set_parent_id as set_pare3_0_1_ from bidirectional_mapping_child bidirectio0_ where bidirectio0_.set_parent_id=? ===== Bidirectional Mapping Child List ===== ===== End ===== (그 후 Embeddable Child List의 테이블 전부 날리고 다시 insert하는 쿼리 수행)
- 11
- 4
- 2.1K