매핑 테이블 값 변경
411
작성한 질문수 2
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
EntityAId와 EntityBId를 받아서 EntityAEntityB 매핑테이블의 a라는 변수의 값을 변경시키려면 어떻게 해야 할까요? EntityA와 EntityB를 각각 조회하고 EntityA의 EntityAEntityBList를 돌면서 EntityB인걸 찾으면 DB에 쿼리가 너무 많이 날아갈거같은데 이런 문제는 어떻게 해결 해야 하나 의문이 들어 질문 드립니다.
답변 2
1
안녕하세요, 인프런 AI 인턴입니다.
임익주님, 매핑 테이블에서 특정 변수의 값을 변경하려는 경우 일반적으로 다음과 같은 단계를 거치게 됩니다:
- 강의 내용과 관련된 질문인가요? (예/아니오)
- 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
- 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
말씀하신 문제를 해결하는 한 가지 방법은 JPQL이나 Criteria API를 사용하여 엔티티를 직접 조회하는 대신에 조인을 활용하여 필요한 매핑 데이터만 선택적으로 조회하는 것입니다. 이렇게 하면 EntityA와 EntityB를 개별적으로 조회한 후 모든 연결된 매핑을 순회하는 것보다 효율적으로 데이터를 처리할 수 있습니다.
예를 들어, 다음과 같은 JPQL 쿼리를 사용하여 특정 EntityAId와 EntityBId에 해당하는 매핑 데이터를 조회하고 업데이트할 수 있습니다:
@Query("SELECT m FROM EntityAEntityB m WHERE m.entityA.id = :entityAId AND m.entityB.id = :entityBId")
EntityAEntityB findMappingByIds(@Param("entityAId") Long entityAId, @Param("entityBId") Long entityBId);
@Transactional
public void updateValue(Long entityAId, Long entityBId, ValueType newValue) {
EntityAEntityB mapping = findMappingByIds(entityAId, entityBId);
if(mapping != null) {
mapping.setA(newValue);
}
}
이 코드는 특정 EntityAId와 EntityBId를 받아서 EntityAEntityB 매핑 테이블에서 해당하는 엔티티를 찾아 a 변수의 값을 변경하는 예시입니다.
또한, 김영한님의 ‘실전! 스프링 데이터 JPA’ 강의 자료의 자주 하는 질문 링크 또는 질문 잘하기 메뉴얼 링크에서 관련 내용이 있는지 먼저 확인하시는 것이 좋습니다. 추가 정보가 필요하다면 구체적인 내용과 함께 인프런 게시판에 질문을 등록하시면 답변을 받으실 수 있습니다.
0
안녕하세요. 임익주님
우선 @ManyToMany를 사용한 상황이라면 앞서 JPA 기본편 강의에서 설명드린 것 처럼 @OneToMany, @ManyToOne의 관계로 풀어내야 합니다. 쉽게 이야기해서 EntityAEntityB를 별도의 엔티티로 만들어야 합니다.
그리고 AI 인턴의 설명과 같이 EntityAEntityB를 조회하는 방식으로 처리하시면 됩니다.
감사합니다.
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
69
1
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
107
3
MemberRepository 구현체
0
58
1
pdf 표현 질문드립니다.
0
62
1
로그가 남지 않는 문제.
0
81
1
테스트 라이브러리가 강의는 junit4가 맞나요??
0
70
2
pdf 파일과 차이점이 있는 것같은데 문제 없나요?
0
72
2
@PrePersist, @PreUpdate 호출 시점 질문드립니다.
0
91
2
Sort 인터페이스는 잘 사용 안하나요?
0
52
1
스캔대상 질문드립니다.
0
46
1
하이버네이트6에서의 최적화에 이은 질문
0
85
1
save() vs saveAndFlush DB 통신 횟수
0
54
1
순수 JPA 리포지토리 코드 수정부분
0
86
2
bulk연산 후 flush하는 이유를 모르겠어요
0
152
3
bulk insert 질문입니다.
0
178
2
교만했던 것 같아요.
0
147
1
RESTful 강의는 안하시는 건지 궁금합니다.
0
147
2
동적 테이블에 대한 질문
0
86
1
영속성 전이와 연관관계
0
130
2
강의 10:25 질문
0
74
1
단건 update 질문
0
95
2
엔티티 와 도메인의 경계
0
127
1
UsernameOnlyDto 타입 type mismatch 오류
0
119
1
Projection 개념과 데이터 전달과정에 대해 질문 있습니다.
0
136
1





