Обновление объекта в базе данных с использованием Apache Cayenne

Я впервые использую Cayenne в проекте. До сих пор я использовал SelectQuery и мне это нравилось. Теперь мне нужно обновить объект, например, мой User объект содержит emailId приписывать. Когда пользователь должен обновить свою электронную почту, я беру существующий User возразить и обновить emailId атрибут с новым значением, предоставленным пользователем.

Проблема начинается сейчас, когда я не понимаю, как сохранить обновление базы данных. Варианты, которые я, кажется, ограничены SQLTemplate или используя EJB QL, Я прав? Есть ли более элегантный способ доставки обновленного объекта DataContext и сохраняете обновление в БД?

Я использую Cayenne в веб-приложении и получаю контекст через WebApplicationContextFilter,

1 ответ

Решение

Да, конечно, есть более элегантный способ. Вы вносите одно или несколько изменений в свои объекты, а затем фиксируете их через ObjectContext, который использовался для получения объектов в первую очередь:

ObjectContext context = ...
List<MyEntity> objects = context.performQuery(...); 
MyEntity o = objects.get(0);  
o.setXyz("new value"); // I assume you got to this point
...
context.commitChanges();

Последняя строка отправляет все ваши изменения в БД.

Другие вопросы по тегам