@ManyToOne JPA 연관에 대한 CascadeType.ALL 이해
JPA의 컨텍스트에서 @ManyToOne 주석은 일대다 관계를 정의합니다. 엔터티 간. CascadeType.ALL은 상위 엔터티에 적용된 모든 지속성 작업이 하위 엔터티에 전파되어야 함을 지정하는 계단식 유형입니다.
다음 샘플 코드를 고려하세요.
public class User { @OneToMany(fetch = FetchType.EAGER) protected Set<Address> userAddresses; } public class Address { @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) protected User addressOwner; }
이 경우 , Address 클래스의 @ManyToOne은 주소가 단일 사용자와 연결되어 있음을 나타냅니다. cascade = CascadeType.ALL은 사용자 인스턴스가 삭제되면 모든 관련 주소(주소 인스턴스)도 데이터베이스에서 삭제되도록 지정합니다.
이 계단식 동작은 유익할 수도 있고 위험할 수도 있습니다.
위의 예에서 사용자에게 여러 개의 주소가 있는 경우 사용자를 삭제하면 일부 주소가 다른 사용자에게 속한 경우에도 해당 주소도 모두 삭제됩니다. 이를 방지하려면 주소에서 사용자로 반대 방향으로 캐스케이드하는 것이 더 적절할 것입니다. 이렇게 하면 주소를 삭제하면 데이터베이스에서 해당 특정 주소만 제거되고 연결된 사용자는 그대로 유지됩니다.
또한 조인 이름을 지정하기 위해 @ManyToOne 관계에 mappedBy 속성을 포함하는 것이 좋습니다. 하위 테이블의 열입니다. 위의 예에서는 Address 클래스에 mappedBy="addressOwner"를 추가하여 Address 테이블의 조인 열 이름이 "addressOwner"임을 나타낼 수 있습니다.
위 내용은 @ManyToOne JPA 연관에서 언제 CascadeType.ALL을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!