말 그대로 OOP에서 쓰이는 클래스와 RDB에서 쓰이는 테이블을 자동으로 연결하는 것을 의미한다. 그러나 클래스와 테이블은 서로 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다.
in memory 방식은 disk-based와 달리 메모리에 데이터를 저장한다. 외부 저장 장치에 데이터를 저장하지 않고 메모리에서 데이터를 읽고 쓴다. 메모리와 디스크 간 병목이 없기 때문에 disk-based 방식보다 훨씬 속도가 빠르다.
ex) DB에 저장된 직원들의 정보를 읽어오면 이것을 그대로 사용하지 않고 Value Object 인스턴스에 담아 사용하는데 이때 VO는 NSManagedObject타입으로 관리 객체에 해당한다.
NSManagedObjectContext는 DB를 대표하며 모든 코어데이터 활동이 이루어지는 허브와도 같은 곳이다. 코드로 이 context에 접근하기 위해선 NSPersistentContainer가 필요하다.
viewContext는 NSManagedObjectContext중에서도 메인 스레드에서만 사용할 수 있는 변수이다. 메인큐에서만 사용되는 이 변수의 이름이 viewContext인 이유는 UIView와 함께 사용되기 때문이다. 메인큐에서만 사용한다는 것이 중요한 이유는 NSManagedObjectContext가 thread safe하지 않기 때문이다.
https://zeddios.tistory.com/987 https://ios-development.tistory.com/89 https://caution-dev.github.io/core/data/2019/07/21/Core-Data-Tutorial.html https://sihyungyou.github.io/iOS-coredata/