Обновление объекта в базе данных с использованием 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();
Последняя строка отправляет все ваши изменения в БД.