key; private String url; ... } PhotoRealm result = realm.where(PhotoRealm.class).findFirst(); String key = result.getKey(); - 이 DAO의 객체를 스레드 간에 전달을 할 수 없음. - 자기가 원하는 시점이 아닌 특정 시점에 값이 바뀔 수 있음 - 내부에 hasKey, toString 등의 추가함수들을 정의할 수 없음. - 디버깅할 때 값을 볼 수 없었음
수 있고 - 특정 시점에 값이 바뀌어도 이전 값을 유지할 수 있으며 - 스레드간의 값을 전달할 수 있도록 - 새로운 DTO를 정의하기로 하였다. - 이 필드들은 RealmObject들과 유사한 Field 값을 가지는 DTO로 정의 했다. PhotoDTO { String key String url } PhotoRealm { String key String url }
반복을 줄이거나 Reflection을 활용해야했던 구현들을 대체하는 등 언어의 한계 를 극복할 수 있음. - 단점: - APT로 컴파일 시간의 추가 - APT로 생성된 파일을 직접적으로 사용시 초기 빌드가 필요 - APT 빌드 실패시 원인을 알기 힘든 에러 - APT 사용하는 대표적인 프로젝트: Dagger, Realm, VCNC의 프로 젝트 등