9

私のAndroidアプリでORMLiteを使用しています。HashMapを持つこのクラスを永続化する必要があります。それを持続させる良い方法は何ですか?HashMapを永続化するのは初めてで、ORMLiteを初めて使用するので、アドバイスをいただければ幸いです。

*編集* それが何か違いを生む場合、Exerciseクラスは単純にString(データベースではidとしても機能します)であり、Setクラスにはint id(データベースではidでもあります)、int weight、intrepsがあります。

@DatabaseTable
public class Workout {

    @DatabaseField(generatedId = true)
    int id;

    @DatabaseField(canBeNull = false)
    Date created;

    /*
     * The hashmap needs to be persisted somehow
     */
    HashMap<Exercise, ArrayList<Set>> workoutMap;

    public Workout() {          
    }
    public Workout(HashMap<Exercise, ArrayList<Set>> workoutMap, Date created){
        this.workoutMap = workoutMap;
        this.created = created;
    }

    public void addExercise(Exercise e, ArrayList<Set> setList) {
        workoutMap.put(e, setList);
    }
    ... 
}
4

1 に答える 1

12

わお。HashMap値がsのaをList永続化するSet。印象的。

したがって、ORMLiteでは、任意のフィールドを永続化できSerializableます。タイプとその構成方法に関するドキュメントは次のとおりです。

http://ormlite.com/docs/serializable

したがって、フィールドは次のようになります。

@DatabaseField(dataType = DataType.SERIALIZABLE)
Map<Exercise, List<Set>> workoutMap;

マップが全体的に大きい場合、これはあまりパフォーマンスが良くない可能性が高いことに注意してください。また、Exerciseクラス(およびListおよびSetクラス)はを実装する必要がありますSerializable

このマップを検索する必要がある場合は、値をSet別のテーブルに保存することを検討してください。その場合、ORMLiteが「外部オブジェクト」をどのように保持するかを確認することをお勧めします。

于 2011-08-23T14:07:41.793 に答える