Morphia и MongoDB - моделирование чего-то вроде настроек - PullRequest
3 голосов
/ 04 ноября 2010

Я оцениваю MongoDB и Morphia прямо сейчас.Как бы я смоделировал что-то вроде «настройки», где есть только одна «запись» (я не уверен в правильном использовании термина Монго).Должен ли я переопределить метод save в моем классе сущностей?Пример того, как это сделать и как его использовать, будет потрясающим.

Например, я хотел бы сохранить конфигурацию домашней страницы:

home page settings
  show friends list:  false
  marketing text:  "You'll love it here"
  main image:  main.jpg

1 Ответ

8 голосов
/ 04 ноября 2010

Если вам нужна только одна копия настроек для вашего приложения (например, синглтона), я бы предложил что-то вроде этого:

@Entity
class Settings {
  @Id int id = 0;
  boolean showFriendsList = false;
  String marketingText = "You'll love it";
  byte[] mainImage = ...; 
}

Поскольку для идентификатора установлено одно значение, при вызове команды save он всегда обновляет один объект. Если вы позвоните по команде insert, и она уже есть, вы получите сообщение об ошибке (если вы проверяете наличие ошибок).

Вы можете обновить сущность, используя get / change / save или update semantics.

Datastore ds = ...;

//get/change/save
Settings s = ds.find(Settings.class).get(); //like findOne in the shell/driver
s.showFriendsList = true;
ds.save(s); 

//or update
ds.updateFirst(ds.find(Settings.class), ds.creatUpdateOperations(Settings.class).set("showFiendsList", true));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...