JpaRepository
Готовый CRUD-интерфейс для JPA
Вместо того чтобы объявлять базовые операции вручную, JPA-репозиторий обычно наследуют от
JpaRepository.
Он уже содержит методы сохранения, поиска по идентификатору, проверки существования, подсчёта и удаления сущностей.
interface CustomerRepository extends JpaRepository<Customer, Long> {
}
@Service
class CustomerService {
private final CustomerRepository repository;
CustomerService(CustomerRepository repository) {
this.repository = repository;
}
Customer rename(long id, String name) {
Customer customer = repository.findById(id).orElseThrow();
customer.setName(name);
return repository.save(customer);
}
}
У интерфейса снова два типа: сущность Customer и её идентификатор Long.
После этого доступны, например, findById, findAll,
save, existsById и deleteById.
Что означает save
save не является отдельной от JPA системой сохранения.
Для новой сущности Spring Data JPA использует JPA-операцию создания,
а для сущности, которую считает существующей, — JPA-механику объединения состояния.
Поэтому жизненный цикл сущностей и правила persistence context продолжают иметь значение.
Не вызывайте save после каждого изменения автоматически.
Если управляемая сущность изменяется внутри подходящей транзакции, JPA умеет обнаружить изменение самостоятельно.
Подробно границы транзакций будут разбираться в отдельном разделе.
Проверь себя
Разбор задания
Ментор знает решение и поможет тебе прийти к нему самостоятельно
Войди, чтобы использовать Ментора
Ментор учитывает текущую задачу и историю диалога.
Войти
Проверь важные нюансы и ответ после собственной попытки.
Войди, чтобы посмотреть решение
Решение и разбор доступны после авторизации.
Войти