JPA 패러다임의 불일치
안녕하세요! 강사님 책과 강의를 보면서 공부하고 있는 학생입니다!
책을 보며 공부하던 중 궁금한 것이 있어 글을 씁니다!
JPA를 사용하는 이유는 자바의 객체지향의 특징을 잃지 않기 위해서도 사용한다고 공부했습니다!
RDBMS는 조인을 이용해 관계를 맺고 객체는 참조를 통해 관계를 맺기 때문에 객체 지향의 특징을 살리기 위해 연관관계를 사용하여 Entity를 짠다고 생각합니다!
그러면 여기서 궁금증이 생겼습니다.
ex) Member, Team 다대일 단방향
다대일 단방향일 때, ManyToOne, JoinColumn으로 Member에서 외래키를 설정 했을 때, 외래키를 사용하면 양방향으로 조회를 할 수 있으니 해당 외래키를 가진 멤버를 spring data jpa를 이용해 findByTeamId()메서드를 사용해서 찾을 수 있지 않나요?? 만약 찾을 수 있다면, 해당 사항은 객체지향의 특징을 잃어버린 것인가요??
만약 위 질문이 맞다면, 양방향 연관관계는 필요 없는 것이 아닌가요??
틀렸다면, 어떤 방식으로 테이블을 짜야 좋은 엔티티를 만들었다고 할 수 있나요??
JPA너무 어렵습니다.. 위 질문의 해결책을 주시면 감사하겠습니다!!
답변 1
1
안녕하세요, 인프런 AI 인턴이에요.
JPA를 사용하는 이유 중 하나는 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 패러다임 불일치를 해결하기 위해서입니다. 이를 위해 각 Entity 간의 관계를 연관관계로 설정하고, 해당 연관관계를 가지고 조회를 할 수 있도록 설정하는 것이 일반적입니다.
만약 ManyToOne 관계를 설정한 Member와 Team Entity가 있을 때, Member 엔티티에서 Team id를 참조하여 Team을 조회하는 findByTeamId() 메서드를 작성할 수 있습니다. 이 경우에도 객체지향의 특징을 유지하면서 원하는 결과를 얻을 수 있습니다.
양방향 연관관계는 필요한 경우가 있습니다. 예를 들어, Member와 Team 간의 관계에서 양방향으로 조회를 해야 하는 경우나, 데이터에 대한 일관성을 유지하기 위해 양방향 관계를 설정해야 하는 경우 등에 활용됩니다.
따라서, 양방향 연관관계를 설정할지 단방향 연관관계를 사용할지는 해당 Entity 간의 관계와 사용하는 상황에 따라 다릅니다. 제공하는 책과 강의에서는 양방향 연관관계를 사용하면서도 객체지향의 특징을 유지하기 위해 적절한 패턴과 방법을 제안하고 있으니, 해당 내용을 참고해보시면 좋을 것 같습니다.
더 자세한 내용이 궁금하시다면, JPA 공식 문서 등을 참고하시면 도움이 될 것입니다. 감사합니다.
sdk 설정 오류
0
55
2
오탈자 - @Transactional
0
56
1
src/test/resources 테스트 경로 문제
0
51
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
64
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
184
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
144
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
52
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
72
1
기본 생성자
0
61
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
103
1
멤버서비스테스트 부분에서 막힙니다.
0
167
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
120
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
114
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
109
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
77
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
73
1
주문 목록 조회 fetch join 질문드립니다
0
82
1
dirty checking 질문드립니다.
0
83
1
동시성 관련 질문입니다
0
75
1





