使用Apache Cayenne将对象更新到数据库

时间:2013-01-20 22:46:08

标签: java apache-cayenne

我第一次在一个项目中使用Cayenne。直到现在,我正在使用SelectQuery并且非常喜欢它。我现在需要更新一个对象,例如我的User对象包含emailId属性。当用户需要更新他/她的电子邮件时,我会使用现有的User对象并使用用户提供的新值更新emailId属性。

问题现在开始了,我不明白将更新持久化到数据库的方法。我的选项似乎仅限于SQLTemplate或使用EJB QL。我对吗?是否有更优雅的方式将更新的对象提供给DataContext并将更新持久保存到数据库?

我在网络应用程序中使用Cayenne并通过WebApplicationContextFilter获取上下文。

1 个答案:

答案 0 :(得分: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();

最后一行将所有更改发送到数据库。