Предполагая, что вы используете DB4O со стандартной конфигурацией и готовой версией - вы используете стандартную внутреннюю схему id DB4O, как показано ниже **.Обновление DB4o и вставка
Во-первых, как предположение, при обновлении или вставке объекта в базу данных программист имеет только один вариант, чтобы вызвать объект objectContainer.store (object) ".
Теперь, как DB4O знает, нужно ли обновлять существующий объект в БД или вставлять полностью новый? Я предполагаю, что DB4O пытается проверить, не является ли внутренний идентификатор объекта нулевым.
Однако я также мог видеть, что бремя лежит на программиста, чтобы сначала вытащить объект из БД, а затем обновить его. Итак, мой вопрос в том, как мы можем надежно обновлять объект в базе данных DB4O, не переняв его в память Java?
* Эта статья db4o не реально ответить на мой вопрос
** Это очень информативно:
Спасибо Vagaus. Я думаю, что у меня будет только одно дополнительное логическое значение для одного объекта модели. Если я вытащил объект из базы данных, тогда save = true, если я создал объект в Java, save = false. Это может быть так просто. –
Я понимаю вашу идею слоя абстракции, но проблема в том, что в основном у вас есть только один метод: i.e. store (object), поэтому все, что вы можете сделать, это убедиться, что вы храните * правильный * объект. И способ убедиться, что у вас есть правильный объект, мне кажется, чтобы отметить объекты, которые пришли из базы данных самостоятельно. Однако мне было бы интересно узнать, отмечает ли DB4O эти объекты с внутренним идентификатором. Поэтому я не уверен, что мне даже понадобится сохраненное логическое значение, просто проверьте, не является ли внутренний идентификатор нулевым или нет. –
с этим сказал, не должен DB4O * знать *, что объект был загружен из БД, если его внутренний идентификатор не является нулевым ....? –