Нет, это не так. Установка локальной переменной на null
ничего не значит вне метода. Hibernate не может знать, что вы аннулировали локальную переменную (даже если это поле не управляется hibernate, для hibernate все равно будет невозможно обнаружить изменения).
Причина в том, что переменные и поля - это просто ссылки на объекты, а не сами объекты. Поэтому, когда вы обнуляете ссылку, это не означает, что объект перестает существовать. В этом случае он все еще существует в спящем режиме. (Как отметил JB Nizet, если объект, владеющий полем, управляется hibernate, hibernate может обнаружить изменение и удалить объект, но это верно только для объектов, управляемых hibernate: присоединенные объекты)
Вам нужно позвонить session.delete(user)