iOS - CoreData
- Executive Summary
-
앱의 데이터를 로컬에 저장하는 기법 중의 하나로 SQL을 이용하지 않고, 내부의 SQLite3를 사용할 수 있으며, 실행 할 때, 메모리에 모든 데이터를 적재해 놓고 사용하는 in MEMORY 방식의 데이터 관리 프레임워크 임.
-
Core Data를 사용하고자 할 때는 애플리케이션 생성 시 use core data 옵션을 체크
-
이 옵션을 체크하지 않으면, core data 사용 객체를 직접 만들어서 사용해야 함.
Core Data의 주요 용어:
-
PersistencyContainer : 데이터 저장소의 개념으로 실제로는 SQLite DB를 이용하고, Documents 디렉터리에 .sqlite파일로 존재.
2. Data Model : Persistency Container에 데이터를 저장할 수 있도록 타입을 설정하는 파일.
-
프로젝트에 .xcdatamodeld라는 파일로 존재.
-
위에 파일을 더블클릭을 해서 Data Model Editor를 화면에 출력해서 데이터 모델링을 함.
1) Entity(객체) -
관계형 DB테이블에 해당하는 개념.
2) Attribute (속성 , 프로그램: property라는 단어를 사용. Column과 유사한 개념.)
-
Entity의 구성요소로 하나의 항목을 나타내는 개념.
3) Relation
-
외래키와 조인에 관련된 개념.
3. Persistency Container의 생성.
-
처음 application을 만들 때 use core data옵션을 체크하면 AppDelegate클래스에 persistencyContainer라는 프로퍼티 이름으로 생성하는 코드가 작성되어 있음.
-
((UIApplication.shared.appDelegate) as! Appdelegate).persistencyContainer로 사용.
4. ManagedObject Context
-
실제 DB작업을 수행해주는 class.
-
이 클래스의 인스턴스는 앞에 persistency container의 viewContext라는 프로퍼티에 이미 생성되어 있음.
-
이 클래스에 save(), delete(), 등의 메소드가 이미 구현되어 있음.
5. ManagedObject
-
save나 delete메소드의 매개변수로 사용되는 클래스인데, 이 클래스가 VO(DTO(Data transfer object), Domain) 클래스의 역할을 수행.
** 프로그래밍 언어로 DB연동.
-
프로그래밍언어가 제공하는 API와 DB 드라이버(패키지)만을 이용해서 사용하는 방식.
-
SQL을 별도로 작성하고, mapping하는 클래스를 만들어서 파라미터나 결과를 자동으로 매핍해주는 방식 - MyBatis
-
SQL없이 매핑하는 클래스를 만들어서 클래스의 instance를 이용해서 DB를 사용하는 방식.
-
ORM(Object Relation Mapping - Hibernate등, Android에서 ContentValue를 이용해서 SQLite연동)
-
DB설계를 따로 하고 DAO 클래스나 DTO클래스를 개발자가 직접 생성을 해야 함.
- Apple의 CoreData는 데이터모델링만 하면 DAO, DTO클래스를 자동으로 생성하고 인스턴스까지 자동으로 만들어 줌.
- SmartPhone 앱 개발시, 앱자체의 효율성을 높이는 것도 중요하지만 얼마나 빨리, 여러 기종에서 사용가능한 것도 중요함.
- 애플에서는 coredata사용을 권장함.
'iOS' 카테고리의 다른 글
iOS - Cocoa Pods (0) | 2020.04.09 |
---|---|
iOS - Custom Fonts (0) | 2020.04.01 |
iOS - ImagePicker (이미지 피커) (0) | 2020.03.27 |
iOS - Application 배포 (0) | 2020.03.26 |
iOS - URLSession (0) | 2020.03.18 |