, Почему это - используемый интерфейс?
, поскольку это поддерживает основные операции, которые позволили бы клиентскому программисту выполнять итерации по любому виду набора (примечание: не обязательно Collection
в эти Object
смысл).
, Почему методы... непосредственно не кодируются к самой реализации структуры данных?
Они, они просто отмечены Частные, таким образом, Вы не можете достигнуть их и унавозить с ними. Более конкретно:
Iterator
таким образом, что это делает что-то, что стандартные не делают, не имея необходимость изменять фактический объект, которого это выполняет итерации. Iterators
однако многим клиентам, которых Вы желаете, и каждый клиент может пересечь в свободное время на их собственной скорости. Iterators
от java.util пакета в особенности выдаст исключение, если устройство хранения данных, что спины их изменяются, в то время как Вы все еще имеете Iterator
. Это исключение сообщает, что эти Iterator
может теперь возвращать недопустимые объекты. Для простых программ, ни одно из этого, вероятно, не кажется стоящим. Вид сложности, которая делает их полезными, подойдет на Вас быстро, все же.
Согласно спецификациям 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);
измените свойство, а затем используйте EntityManager merge ()
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#merge % 28T% 29