
스프링 숙련
1. 지연로딩
- JPA는 연관관계가 설정된 Entity의 정보를 바로 가져올지, 필요할 때 가져올지 정할 수 있습니다.
- 즉, 가져오는 방법을 정하게되는데 JPA에서는 Fetch Type이라 부릅니다.
- Fetch Type의 종류에는 2가지가 있는데 하나는 LAZY , 다른 하나는 EAGER 입니다.
- LAZY 는 지연 로딩 으로 필요한 시점에 정보를 가져옵니다.
- EAGER 는 즉시 로딩 으로 이름의 뜻처럼 조회할 때 연관된 모든 Entity의 정보를 즉시 가져옵니다.
- 기본적으로 @OneToMany 애너테이션은 Fetch Type의 default 값이 LAZY 로 지정되어있고 반대로 @ManyToOne 애너테이션은 EAGER 로 되어있습니다
2. 영속성 전이
- 영속 상태의 Entity에서 수행되는 작업들이 연관된 Entity까지 전파되는 상황을 뜻합니다.
- Cascade
- CascadeType.ALL : 영속성 전이를 적용하여 해당 Entity에 모든 영향을 주는 방법
- CascadeType.PERSIST : 영속성 전이를 적용하여 해당 Entity를 저장할 때 연관된 Entity까지 자동으로 저장
- CascadeType.REMOVE : 영속성 전이를 적용하여 해당 Entity를 삭제할 때 연관된 Entity의 관계를 삭제
- orphanRemoval = true : orphanRemoval 옵션도 REMOVE 옵션과 마찬가지로 해당 Entity 즉, 상위 Entity 객체를 삭제하면 연관된 하위 Entity들이 자동으로 삭제됩니다.