RealmDb: чистая архитектура на Android

Я оцениваю RealmDb, я чувствую, что RealmDb тесно связан с модельным слоем. Что заставляет меня чувствовать, что завтра мне нужно будет заменить какую-нибудь другую локальную базу данных, чем это будет огромная работа по рефакторингу.
Мой вопрос: как добиться чистой архитектуры с помощью RealmDB? Любые примеры, которым я могу следовать?

Realm просто упрощает повторное использование ваших моделей баз данных в качестве моделей просмотров, если вы хотите. Но нет ничего, что помешало бы вам иметь объекты уровня данных и просматривать объекты уровня объекта, а затем делать сопоставление на границах.

Например

// Data layer public class FooEntity extends RealmObject { // Realm fields and methods... public static FooEntity fromViewModel(FooViewModel viewModel) { // Convert to entity } public static FooViewModel toViewModel(FooEntity entity) { // Convert to view model } } // View layer public class FooViewModel { // Standard POJO used by the View layer } 

Во многих случаях это, скорее всего, излишнее, но это даст вам необходимое вам разделение.

Существуют разные архитектуры, главная задача которых заключается в том, чтобы изолировать область нашего применения фреймворков как чистую архитектуру, архитектуру лука, гексагональную архитектуру.

Для достижения этой изоляции детали реализации скрыты как уровень данных. Граница или порт определены в уровне домена, определяющем доступ к хранимым данным, но не зная, как они хранятся, шаблон репозитория обычно используется для реализации этого требования к архитектуре.

С этими требованиями мы обычно будем иметь модель персистентности и дифференцированные объекты домена. Модели устойчивости могут и должны быть связаны с каркасом, который мы используем, например, в Царстве.

Я оставляю диаграмму, где вы можете лучше понять ее графически.

Чистая архитектура