Встречается на собеседованиях • сегодня

Как получить доступ к данным сущности в @Transactional методе

В @Transactional методе доступ к данным сущности осуществляется через Hibernate Session (в JPA - EntityManager). Сущности автоматически привязываются к текущей транзакции. Пример:

java
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
text
@Transactional
public void updateUser(Long id, String newName) {
    User user = userRepository.findById(id).orElseThrow();
    user.setName(newName); // Изменения автоматически сохранятся при commit
}

}

text

Ключевые моменты:
1. Изменения сущности сохраняются при успешном завершении транзакции
2. Если сущность detached (например, получена в другой транзакции), нужно сначала выполнить merge()
3. Для ленивой загрузки (@ManyToOne, @OneToMany и др.) доступ возможен только внутри транзакции
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы