Java 共享对象实例时的短生命周期会话?

Java 共享对象实例时的短生命周期会话?,java,hibernate,entitymanager,Java,Hibernate,Entitymanager,我与一位同事发生冲突 假设我们在Hibernate中实现短期会话。我是说 public int createUser(String eMail){ User u = new User(); u.setEMail(eMail); em.persist(u); return u.getUserId(); } // time to think. public void changeUserEMail(int userId, String newEMail){

我与一位同事发生冲突

假设我们在Hibernate中实现短期会话。我是说

public int createUser(String eMail){
    User u = new User();
    u.setEMail(eMail);
    em.persist(u);
    return u.getUserId();
}

// time to think.

public void changeUserEMail(int userId, String newEMail){
    User user = (User) em.find(User.class, userId);
    user.setEMail(newEMail);
    em.persist(user);
}
这是短期会话。我的同事是什么意思

public User createUser(String eMail){
    User user = new User();
    user.setEMail(eMail);
    em.persist(user);
    return user;
} // detach after call

// time to think

public void changeUserEMail(User user, String newEMail) {
    em.merge(user); // attach
    user.setEMail(eMail);
    em.persist(user);
} // detach after call
也是短命的会话

谁更正确