Как реализовать обновление () метод в использовании ДАО EntityManager (JPA)?

, Почему это - используемый интерфейс?

, поскольку это поддерживает основные операции, которые позволили бы клиентскому программисту выполнять итерации по любому виду набора (примечание: не обязательно Collection в эти Object смысл).

, Почему методы... непосредственно не кодируются к самой реализации структуры данных?

Они, они просто отмечены Частные, таким образом, Вы не можете достигнуть их и унавозить с ними. Более конкретно:

  • можно реализовать или разделить на подклассы Iterator таким образом, что это делает что-то, что стандартные не делают, не имея необходимость изменять фактический объект, которого это выполняет итерации.
  • Объектам, которые могут быть пересечены, не должны были загромождать их интерфейсы с пересекающимися методами, в особенности любыми узкоспециализированными методами.
  • можно раздать Iterators однако многим клиентам, которых Вы желаете, и каждый клиент может пересечь в свободное время на их собственной скорости.
  • Java Iterators от java.util пакета в особенности выдаст исключение, если устройство хранения данных, что спины их изменяются, в то время как Вы все еще имеете Iterator. Это исключение сообщает, что эти Iterator может теперь возвращать недопустимые объекты.

Для простых программ, ни одно из этого, вероятно, не кажется стоящим. Вид сложности, которая делает их полезными, подойдет на Вас быстро, все же.

20
задан Roman 27 November 2009 в 14:49
поделиться

2 ответа

Согласно спецификациям JPA, EntityManager # merge () вернет ссылку в другой объект, отличный от того, который был передан, когда объект уже был загружен в текущем контексте. Итак, я бы предпочел вернуть результат merge () и написать метод update () следующим образом:

@PersistenceContext
private EntityManager em;

public User update (User transientUser) {
    return em.merge(transientUser);
}

Затем использовать его так (пропуская часть инициализации ):

user.setPhone("YYYYYY");
user = dao.update(user);
50
ответ дан 29 November 2019 в 23:11
поделиться

измените свойство, а затем используйте EntityManager merge ()

http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#merge % 28T% 29

2
ответ дан 29 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: