개발/JPA 3

JPA 객체 매핑

JPA를 사용하려면 클래스와 테이블을 매핑해야 한다. @Entity 해당 클래스를 테이블과 매핑한다고 JPA에 알려준다. 엔티티 클래스라고 한다. @Table 엔티티 클래스에 매핑할 테이블 정보를 알려준다. name 속성을 사용해서 테이블과 매핑한다. 어노테이션을 생략하면 엔티티의 이름을 테이블 이름으로 사용한다. @Id 엔티티 클래스의 필드를 테이블의 기본 키(PK)에 매핑한다. 식별자 필드라고 한다. @Column 필드를 컬럼에 매핑한다. name 속성을 사용해서 엔티티 클래스의 필드와 테이블의 컬럼에 매핑한다. 매핑 정보가 없는 필드 매핑 어노테이션을 생략하면 필드명을 사용해서 컬럼명으로 매핑한다. * 만약 대소문자를 구분하는 데이터베이스를 사용한다면 명시적으로 매핑해야 한다. Member 클래스와..

개발/JPA 2023.01.11

JPA Entity 삭제 설정 : orphanRemoval vs CascadeType.REMOVE

삭제 관련된 옵션으로 orphanRemoval 과 Cascade 가 있다. JPA 연관 관계 설정 시 옵션을 추가할 수 있다. orphanRemoval JPA 2.0 부터 지원하며 부모 엔티티와 관계가 끊어진 자식 엔티티를 자동으로 삭제한다. @OneToMany 와 @OneToOne 에서 지원하는 옵션 cascade 설정된 엔티티가 저장/수정/삭제 될 때 연관된 엔티티들도 전부 동일한 액션을 한다. 영속성 전이에 관한 옵션 CascadeType.REMOVE 연관 관계의 주인이 아니더라도 해당 엔티티를 지우면 관련된 모든 엔티티들이 삭제된다. 비교 부모 엔티티가 삭제되면 자식 엔티티도 전부 삭제되는 것은 동일하지만 원인이 다름 orphanRemoval = true 옵션은 부모 엔티티가 사라지면서 자식 엔티..

개발/JPA 2022.12.16