백엔드 API를 생성할 때 엔터티 관계를 사용하여 데이터를 구성하는 것이 일반적입니다. 일반적으로 강좌나 튜토리얼에서는 주로 양방향 관계를 봅니다. 하지만 한 엔터티가 다른 엔터티와 독립적으로 존재하도록 하려면 어떻게 해야 할까요? 이 기사에서는 이를 달성하기 위해 JPA/Hibernate와의 단방향 관계를 사용하는 방법을 살펴보겠습니다.
Student와 ThesisSchedule이라는 두 개의 엔터티가 있다고 가정해 보겠습니다. Student와 ThesisSchedule의 관계는 '다대일'입니다. 즉, 학생은 논문 일정과 연결될 수 있고 각 일정에는 여러 학생이 포함될 수 있습니다.
이 경우 우리의 목표는 먼저 ThesisSchedule을 정의하지 않고도 학생을 생성할 수 있도록 하는 것입니다. 이러한 독립성은 예를 들어 논문 일정을 만들기 전에 데이터베이스에 학생을 추가할 때 유용합니다.
Student에서 ThesisSchedule까지의 단방향 "다대일" 관계를 사용하여 Student 및 ThesisSchedule 클래스를 생성하겠습니다.
학생단체 코드:
ThesisShedule 엔터티 코드:
여기서는 Student 클래스의 @ManyToOne 주석으로 표시되는 Student에서 ThesisSchedule까지 단방향 관계를 갖습니다. nullable = true를 지정하면 ThesisSchedule과 반드시 연결되지 않고도 학생을 생성할 수 있습니다.
이 설정이 데이터베이스로 어떻게 변환되고 API를 통해 데이터가 저장될 수 있는지 살펴보겠습니다.
이 설정을 사용하면 ThesisSchedule을 제공하지 않고도 학생을 생성할 수 있습니다.
학생 생성을 위한 POST 요청(ThesisSchedule 없음):
이렇게 하면 논문_일정_ID 열에 null 값이 있는 학생 테이블에 새 항목이 생성됩니다.
결과:
ThesisSchedule이 생성되면 학생 기록을 업데이트하여 이와 연결할 수 있습니다.
논문 일정 작성:
새롭게 생성된 ThesisSchedule의 ID는 1일 수 있습니다.
ThesisSchedule로 학생 업데이트:
결과:
이제 Larose는 새로 생성된 ThesisSchedule과 연결됩니다.
어떤 경우에는 ThesisSchedule 측에서 관계를 관리하는 것이 더 적절할 수도 있습니다. 이 접근 방식은 논문 일정에서 관련 학생을 관리하고 특정 일정에 참여한 학생을 추적하려는 경우에 유용합니다.
이 설정에서 ThesisSchedule은 "일대다" 관계를 나타내는 Student 컬렉션을 보유하는 반면 Student는 ThesisSchedule에 대한 참조를 유지하지 않습니다.
ThesisSchedule 엔터티 코드:
학생단체 코드:
이 구성에서 ThesisSchedule에는 @OneToMany 주석을 통해 학생 목록이 포함됩니다. 결과적으로 Student에서 직접 링크를 사용하지 않고도 학생을 ThesisSchedule에 추가하거나 제거할 수 있습니다.
결론적으로 학생 측 또는 ThesisSchedule 측에서 관계를 관리할지 여부는 애플리케이션의 특정 요구 사항에 따라 다릅니다.
두 구성 모두 유연성을 제공하고 원하는 데이터 관계를 기반으로 잘 구성된 백엔드 API를 허용합니다. 모범 사례를 적용하여 엔터티 관계를 구조화함으로써 애플리케이션의 특정 요구 사항을 충족하도록 데이터베이스를 효과적으로 모델링할 수 있습니다.
단방향 관계는 백엔드 API의 엔터티 간 선택적 종속성을 관리하기 위한 강력한 옵션입니다.
이 솔루션이 다른 개발자가 JPA/Hibernate의 단방향 관계를 더 잘 이해하고 사용하는 데 도움이 되기를 바랍니다.
위 내용은 JPA의 관계: 종속성 없이 엔터티 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!