Room라이브러리를 활용하여 데이터를 정의하려고 한다.
entity클래스를 만들어 테이블의 스키마(속성, 도메인)를 정의하는데, google developer 문서에 보면 필드 무시라는게 있다.

@Ignore 어노테이션은 특정 필드를 SQLite 테이블에 포함시키지 않도록 Room 라이브러리에 지시한다.
이 경우 Bitmap 타입의 picture 필드에 @Ignore 어노테이션이 있으므로, Room은 이 필드를 무시하고 데이터베이스에 포함시키지 않는다.
이로 인해 picture 필드는 Java 객체 내에서만 사용되며 SQLite 테이블에는 유지되지 않는다.
객체 안에서만 쓴다는게 뭘까?
Bitmap picture 필드가 클래스에 포함된 이유는, 프로그래머가 사용자 프로필 이미지를 가진 User 객체를 다루기 원하기 때문이다. 여기서 picture 필드는 해당 사용자에 대한 이미지 정보를 포함하여 사용자에 관한 더 많은 정보 저장할 목적으로 사용된다.
그러나 일반적으로 이미지와 같이 크기가 큰 바이너리 데이터를 데이터베이스에 직접 저장하는 것은 좋지 않은 방법이다. 따라서 @Ignore 어노테이션을 사용하여 데이터베이스에서 무시하도록 하고, 실제 애플리케이션에서만 User 객체 내에서 사용할 수 있도록 하는 것이다..
데이터베이스에 저장되지 않는다? 크기가 큰 데이터를 데이터베이스 안에 저장하면 데이터베이스 실행할때 느려지니까 다른데 저장하고 참조 정보만 데이터베이스에 저장한다는건가?
맞다. 데이터베이스 작업 속도를 유지하고 데이터를 효율적으로 관리하기 위해 일반적으로 이미지와 같은 큰 바이너리 데이터는 별도의 파일로 앱 내부 저장소에 저장한다.
이렇게하면 데이터베이스에는 이미지 파일에 대한 참조 정보(예: 경로, 파일 이름)만 저장되며, 실행 시 필요한 이미지 데이터를 읽어오기 위해 해당 참조 정보를 사용한다. 이러한 방식으로 구현하면 데이터이스의 작업 속도와 성능을 유지하면서 필요한 데이터를 효율적으로 사용할 수 있다.
'미완성글' 카테고리의 다른 글
안드로이드 스튜디오에서 두 개 이상의 서로 다른 테이블을 동시 참조하는 경우 (0) | 2023.06.05 |
---|---|
지연 로드 개념 (0) | 2023.06.05 |
여러 테이블 쿼리 (0) | 2023.06.05 |
가변 인자는 무엇일까? (0) | 2023.06.05 |
개체와 객체는 뭐가 다를까? (1) | 2023.06.05 |