Ответ
Да, это стандартная и ожидаемая практика. Одна транзакция может включать операции с любым количеством сущностей и даже с разными их типами.
Ключевое условие: Все операции должны выполняться в контексте одного и того же EntityManager (или Hibernate Session).
Пример (JPA):
@Entity
public class User { /* ... */ }
@Entity
public class Order { /* ... */ }
// В сервисном слое
@Transactional // Управление транзакцией через Spring
public void createUserWithOrder(String userName, String orderDetails) {
// Все действия внутри одного EntityManager и транзакции
User user = new User(userName);
entityManager.persist(user); // Сохраняем первую сущность
Order order = new Order(orderDetails, user);
entityManager.persist(order); // Сохраняем вторую сущность
// При коммите Spring/JPA сформирует и отправит INSERT для обоих объектов
}
Преимущество (Atomicity — Атомарность): Если на любом этапе (например, при сохранении Order) произойдет ошибка, вся транзакция откатится (rollback). Это гарантирует, что в базе данных не останется частично сохраненных данных (например, User без Order).