我想开发一个使用Java,Spring Data/MVC/DI,Hibernate定义类似REST的API的CMS。Hibernate更新对象的非引用字段
我有以下的模型实体:
- 有多个
Article
小号 - 每篇文章都有多个
Section
小号 - 每个部分可以有小节和/或
Item
所有这些实体具有自己的属性(例如名称,类型等),但是显然它们指的是它们的聚合实体。我需要为每个这样的实体定义CRUD API方法。
我决定偏离教条式的REST,当我修改时,我只需要传入特定于实体的属性(如名称,类型等),但不会影响聚合。因此,我有这样的端点:
- 后
/articles
- 创建一个文章,无节 - 把
/articles/{article_id}
- 更新基本款性质,不影响部分 - 后
/articles/{article_id}/sections
- 创建文章中的一段 - 删除
/articles/{article_id}/sections/{section_id}
- 删除文章中的部分 - 放
/articles/{article_id}/sections/{section_id}
- 更新基本部分属性,不影响拥有物品属性,也不影响汇总的部分和项目 - 等...
所以我的问题是:
当我收到一个修改请求我得到的元素的所有基本属性与所拥有的实体标识符一起。如何有效地将这些关系与数据库中的现有关系组合在一起,以便我保留所有这些关系并修改基本属性,而无需逐个复制所有属性。以下是文章部分关系的示例。
public void modifySection(int articleId, int sectionId, Section section) {
assert(article.owns(sectionId));
Section dbSection = sectionDao.findOne(sectionId);
copyOverProperties(section, dbSection); // this is the thing I do not know how to do
sectionDao.save(dbSection);
}
Hibernates合并方法将为您做到这一点。 –
@WeareBorg - 你能联系我吗?随意张贴一个答案 –
你在寻找类似http://dozer.sourceforge.net/documentation/about.html还是http://orika-mapper.github.io/orika-docs/intro.html? –