강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của jonghaha7
jonghaha7

câu hỏi đã được viết

Lập trình JPA tiêu chuẩn Java ORM - Cơ bản

một đối nhiều [1:N]

FK 를 양쪽에서 관리하는 경우

Đã giải quyết

Viết

·

282

0

어려운 내용을 쉽게 풀어서 설명하시는 능력에 감탄이 나오네요! 좋은 강의 만들어주셔서 감사합니다 : )

FK를 양쪽 테이블에서 모두 관리할 수 있는 경우 어떤 문제들이 야기될 수 있는지 감이 잘 오지 않습니다. 간단한 예시가 있을까요? ㅠㅠ 

JPAjava

Câu trả lời 3

1

yh님의 프로필 이미지
yh
Người chia sẻ kiến thức

안녕하세요. jaden님

JPA 스펙에서 양방향은 항상 한쪽이 mappedBy가 되어야 합니다.

따라서 이 방법이 잘 동작한다고 해도 사용하지 않는 것을 추천드립니다.

감사합니다.

0

jaden님의 프로필 이미지
jaden
Người đặt câu hỏi

질문이 명확하지 않았네요 ㅠㅠ 죄송합니다.

16분 30초 쯤 Team 도 연관관계의 주인이되고 Member 도 연관관계의 주인이 되는 상황에서 야기되는 문제들이 궁금합니다.

@Entity
@NoArgsConstructor @AllArgsConstructor
@Builder @Getter
public class Member {

    @Id @GeneratedValue
    @Column(name = "member_id")
    private Long id;

    private String username;

    @ManyToOne
    @JoinColumn(name = "team_id")
    private Team team;
}

----------------


@Entity
@Getter @Builder
@NoArgsConstructor @AllArgsConstructor
public class Team {

    @Id @GeneratedValue
    @Column(name = "team_id")
    private Long id;

    private String name;

    @OneToMany
    @JoinColumn(name = "team_id")
    private List<Member> members = new ArrayList<>();
}

--------------

@SpringBootTest
@Transactional
@Rollback(false)
class MemberTest {

    @Autowired
    EntityManager em;

    @Test
    void member(){
        Member member = Member.builder()
                .username("jaden")
                .build();
        em.persist(member);

        Team team = Team.builder()
                .name("teamA")
                .members(new ArrayList<>())
                .build();

        team.getMembers().add(member);
        em.persist(team);

        em.flush();
        em.clear();

        Team team2 = Team.builder()
                .name("teamB")
                .members(new ArrayList<>())
                .build();

        em.persist(team2);

        Member member2 = Member.builder()
                .username("m2")
                .team(team2)
                .build();

        em.persist(member2);
    }


}

문제점이 어떻게 일어날지 궁금해서 테스트를 돌려봤는데

기대했던 대로 입력이 되는 것 같아 질문드립니다 ! 

0

yh님의 프로필 이미지
yh
Người chia sẻ kiến thức

안녕하세요. jaden님

어떤 문맥에서 나온 이야기일까요? 강의에서 정확한 시간을 알려주시면 제가 다시 듣고 문맥을 파악해서 답변을 드리겠습니다.

감사합니다.

Hình ảnh hồ sơ của jonghaha7
jonghaha7

câu hỏi đã được viết

Đặt câu hỏi