3.9.5.1. Сохранение снимков
Для сохранения снимка некоторого графа сущностей достаточно вызвать метод EntitySnapshotService.createSnapshot()
и передать ему основную сущность графа и представление, описывающее граф. Снимок создается по загруженной сущности, никаких обращений к базе данных не производится, поэтому снимок в результате содержит не больше полей, чем представление, с которым была загружена основная сущность.
Граф Java объектов преобразуется в XML и сохраняется в базе данных вместе со ссылкой на основную сущность в таблице SYS_ENTITY_SNAPSHOT, соответствующей сущности EntitySnapshot
.
Как правило, снимки требуется сохранять после коммита экрана редактирования. Для этого можно использовать подписку на event handler метод onAfterCommitChanges
контроллера экрана, например:
public class OrderEdit extends StandardEditor<Order> {
@Inject
InstanceContainer <Order> orderDc;
@Inject
protected EntitySnapshotService entitySnapshotService;
...
@Subscribe
public void onAfterCommitChanges(AfterCommitChangesEvent event) {
entitySnapshotService.createSnapshot(orderDc.getItem(), orderDc.getView());
}
}