추가적인 지식을 습득해서 정리를 한다.
지연 로딩과 즉시 로딩이다. 쉽게 말하면 "시작했어? 오케이 그럼 이따가 나 필요할 때 갈께~" 와 "시작했네? 야 일단 다 모여봐" 의 차이이다. 가장 쉬운 예시는 쿠팡 홈페이지다. 우리는 쿠팡에 들어가면 검색창에서 제품을 검색하고 사용한다. 그렇기에 처음 홈페이지에 들어가면 있는 검색창과 카테고리 등등 바로 뜨는 화면은 바로 필요하다. 때문에 FetchType.EAGER(=즉시 로딩) 으로 해놔야한다.
하지만 스크롤을 끝까지 내리면 있는 자질구레한 것들까지 즉시 로딩이 필요할까? 필요하면 로딩해서 주는것이 효율적일 것이다. 이런 경우에 사용하는 것이 FetchType.LAZY(=지연 로딩) 이다.
여기서 주의점은 Transactional과 관계이다. 지금까지 이해한 바로는 FetchType.LAZY 는 해당 기능을 시작한 시점과 정보를 불러오는 시점이 동일하지 않다. 기능을 시작한 시점의 정보와 불러오는 시점의 정보가 동일하지 않을 수도 있다는 말이다. 그렇기에 지연로딩 된 정보를 조회할 때(=필요할 때)는 단순 조회임에도 불구하고 Transactional을 필요로 한다. 하나의 덩어리로 기능을 수행해야하기 때문이라고 생각이 된다.
cascade 는 종속이라는 뜻을 가지고 있다. 엔티티 간의 연관 관계를 설정할 때, 종속관계를 설정하는 기능을 가지고 있다.
[TIL#25-2] 가을에 시작한 Spring <PLUS 복습> (0) | 2023.12.19 |
---|---|
[TIL#25-1] 가을에 시작한 Spring <PLUS 복습> (0) | 2023.12.15 |
[TIL#23] 가을에 시작한 Spring <IoC/DI> (0) | 2023.11.28 |
[TIL#21] 가을에 시작한 Spring <ERD 작성> (0) | 2023.11.16 |
[TIL#15-1] 가을에 시작한 Spring part.2 <테스트 코드, Spring MVC, Controller, 정적페이지&동적페이지> (1) | 2023.11.03 |