2016-05-07 2 views
5

私はRealmDbを評価していますが、RealmDbはモデルレイヤと緊密に結合していると感じています。明日私はそれが巨大なリファクタリングの努力よりもいくつかの他のローカルデータベースに置き換えなければならないと感じる。
私の質問は、RealmDBでクリーンなアーキテクチャを実現する方法です。私が従う例は何ですか?RealmDb:Androidのアーキテクチャを清潔にする

答えて

2

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 
} 

多くの場合、過剰殺人の可能性が高いですが、それはあなたに必要な分離を与えるでしょう。

+0

私は私の理解が正しければ、それは私のデータ層エンティティがRealmObjectから継承する必要がどういう意味かわかりませんか? – Signcodeindie

+0

はい、それはあなたのデータレイヤーなので、Realmデータを保存して保存するのは何でしょうか? –

+0

このアプローチでは、すでに永続化されているモデルを更新する**ベストプラクティスは何ですか? 'fromViewModel'を呼び出して' realm.insert(fooEntity) 'を実行できますか?または、最初に 'findById'を実行し、トランザクション内で検索されたオブジェクトのsetterを呼び出す必要がありますか? – einsA

0

主な目的は、フレームワークのアプリケーションのドメインをクリーンアーキテクチャ、オニオンアーキテクチャ、六角形アーキテクチャとして分離することです。

この分離を実現するために、実装の詳細はデータレイヤーとして隠されます。格納されたデータへのアクセス方法を定義する境界またはポートが定義されていますが、格納方法を知らなくても通常はこのアーキテクチャ要件を実装するためにリポジトリパターンが使用されます。

これらの要件では、一般に、永続性モデルと差別化されたドメインエンティティがあります。パーシスタンスモデルは、例えばRealmのようなフレームワークに結合することができます。

グラフを理解しやすい図を残します。

Clean Architecture

関連する問題