Pregunta sobre el vaciado con JPA antes de llamar una consulta

Solo una pregunta rápida, pero ¿es necesaria la descarga en este código? Tenga en cuenta que esto estaría dentro de una transacción JPA.

User user = new User();
em.persist(user);

em.flush;

User aUser = em.find(User.class,user.getId());
assert(user.equals(aUser));

¿O funcionará sin la descarga?

User user = new User();
em.persist(user);

User aUser = em.find(User.class,user.getId());
assert(user.equals(aUser));

O la misma pregunta pero un ejemplo un poco más complicado:

User user = em.find(User.class,id);
user.setName("My Name");
em.merge(user);

em.flush; //Is this line needed?

User aUser = em.createQuery("select u from User where u.name = 'My Name');
assert(user.equals(aUser));

Respuestas a la pregunta(1)

Su respuesta a la pregunta