Ответ 1
Я согласен, вы не должны рушить вручную. Мой опыт разработчика webapp сказал, что FushMode должен быть установлен на "AUTO". Но иногда мне нужно отключить грязную проверку (для проверки данных, проверки данных в базе данных и возврата данных формами или службами). Для этого я создаю специальный класс и отключил грязную проверку, изменив FLUSHMODE
@Component
public class ValidateRefPaysService implements IValidateRefPaysService {
...
@Autowired
@Qualifier("sessionFactory")
private SessionFactory sessionFactory;
@Override
@Transactional(readOnly=true)
public void validate(RefPays refPays) throws BusinessException {
try {
sessionFactory.getCurrentSession().setFlushMode(FlushMode.MANUAL);
if ( refPays.getId() != null ) {
RefPays refPaysBase = refPaysDAO.getById(refPays.getId());
if ( refPaysBase != null ) {
throw new BusinessException("L'id already exists in database.", "RefPays.savePays.id.alreadyexist", "refPays.savePays.id.alreadyexist");
}
}
} finally {
sessionFactory.getCurrentSession().setFlushMode(FlushMode.AUTO);
}
}
}