Core Data에 대해 처음 배웠다.
근데 강사님의 설명이 전혀 이해되지 않았다.. 제일 이해 안 가던 부분은 Abstract Entity
Abstract (추상) 라는 개념이 잘 잡혀있지 않아서 인 것 같다.
그래서 일단 Abstract Entity 를 검색 해봤다. 강사님이 작성해주신 속성 설명보다 더 잘 이해되는 블로그를 찾았다.
바로 여기
https://jcsoohwancho.github.io/2020-01-02-Core-Data-시작하기(2)-Data-Model-만들기(1)-entity만들기/
강사님이 알려주신 Abstract Entity의 설명은 이러했다.
- Abstract Entity : 해당
Entity를 추상(Abstract)Entity로 만들 경우, 해당 옵션을 선택합니다. 기본적으로 이 옵션은 선택되어 있지 않으며, 그 결과 데이터베이스에 실제로 저장되는 엔티티의 형태인concrete Entity가 생성됩니다.
Abstract Entity는 상속을 통해 확장되고, 이를 통해 공통적인 특성을 가진 여러Entity가 효율적으로 관리될 수 있습니다.
concrete Entity --> 이게 무슨 말인지 전혀 이해가 되지 않았다. '데이터베이스에 실제로 저장되는' 그럼 실제로 저장되지 않는 게 있다는건가? 코어 데이터에 대해 전혀 모르는 상태라 이해가 가지 않는 말인 것 같다.
concrete Entity 이 부분도 이해가 안 갔다. 내가 모르는 콘크리트의 다른 뜻이라도 있는걸까? 구글에 검색해봤다.
What does make it concrete mean?
: to form into a solid mass : solidify. b. : combine, blend. 2. : to make actual or real : cause to take on the qualities of reality.
문맥을 봤을 때 2번에 해당하는 뜻인 것 같다. 하지만 그래도 이해는 가지 않는다.
Abstract Entity 는 상속을 통해 확장되고, 이를 통해 공통적인 특성을 가진 여러 Entity 가 효율적으로 관리될 수 있습니다.--> 이게 Parent Entity의 특징과 뭐가 다르단 말인가? 분명 다르겠지만 뭐가 다른건지 정확히는 모르겠다..
강사님께서 알려주신 Parent Entity의 특징은 이러하다.
- Parent Entity : 유사한
Entity가 여러 개 있는 경우Parent Entity를 정의하여 공통 속성을 정의하고Child Entity가 해당 속성을 상속하도록 할 수 있습니다. 기본적으로 이 필드는 비어 있습니다.
Abstract Entity: 해당 entity로 instance를 만들 수 있는 지 여부를 나타냅니다. 이 항목에 체크가 되어 있으면, 해당 entity는 추상 entity 로 사용되어 해당 타입의 인스턴스를 만들 수 없게 됩니다. 만약 Abstract 설정이 되어 있는 entity를 DataModel을 통해 인스턴스화 시키려 한다면 예외가 발생하게 됩니다.
강사님의 설명에는 인스턴스화라는 중요한 부분의 설명이 빠져있었다.
Parent Entity: 부모 Entity를 설정합니다. 이를 설정하면 부모 entity의 모든 attribute를 그대로 가지게 됩니다. 즉, 상속의 효과를 가질 수 있습니다.