JDO - нужно ли вызывать DetachCopy для моего объекта модели перед передачей его в представление? - PullRequest
1 голос
/ 10 февраля 2010

Мое понимание отделенной копии состоит в том, что она создает копию вашего объекта, так что вы можете вносить в нее изменения, не обращая внимания на PersistenceManager.

Поскольку я закрываю свой PersistenceManager перед передачей объекта модели в представление, которое будет использоваться, мне не придется вызывать что-либо вроде detachCopy или makeTransient, прежде чем передать его, не так ли?

Примеры, на которые я смотрел, называют это ... Это пример, который я посмотрел с http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html:

public Employee getEmployee(User user) {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    Employee employee, detached = null;
    try {
        employee = pm.getObjectById(Employee.class,
            "Alfred.Smith@example.com");

        // If you're using transactions, you can call
        // pm.setDetachAllOnCommit(true) before committing to automatically
        // detach all objects without calls to detachCopy or detachCopyAll.
        detached = pm.detachCopy(employee);
    } finally {
        pm.close();
    }
    return detached;
}

Ответы [ 2 ]

1 голос
/ 04 ноября 2013

С http://db.apache.org/jdo/attach_detach.html

Отдельный объект сохраняет идентификатор своего объекта хранилища данных. отдельный объекты должны использоваться там, где вы хотите обновить объекты и прикрепить их позже (обновление связанного объекта в хранилище данных. Если вы хотите создавать копии объектов в хранилище данных с собственными тождества вы должны использовать makeTransient вместо detachCopy.

1 голос
/ 10 февраля 2010

Вы можете автоматически отключать объекты с помощью PMF prop или отсоединять их копии вручную, как показано в примере. Теперь в чем был вопрос?

...