@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public Integer createUsers(final Collection<MyUser> myUsers) {
final Session session = sessionFactory.getCurrentSession();
for (final MyUser myUser : myUsers) {
/*create auto id from db and asscoiate object with session */
session.save(myUser);
myUser.setPassword("password");
}
return myUsers.size();
}
Новый пароль автоматически сохраняется в БД, потому что объект связан с сеансом.Любые дальнейшие изменения myUser в этом методе / сеансе теперь сохраняются в базе данных , если только экземпляр объекта не отсоединен / исключен из сеанса .
Когда метод завершен, транзакция закрывается, и сеанс выходит из области видимости;если я вернул объект MyUser из этого метода, любые дальнейшие изменения вне этого метода (например, временные изменения в моем контроллере) не будут сохранены в базе данных (если, конечно, я не свяжусь с другим сеансом и транзакцией)?