Просто чтобы упомянуть: все эти вопросы легко в Google и частично уже ответил на существующие вопросы.
1 Зависит от того, какие операции вы используете:
- , если у вас есть аннотация @Transactional для вашего метода, он выполнит все операции в конце метода (самого верхнего).
- имейте в виду: существуют разные типы транзакций (например, require_new создаст приостановивший родительский элемент, а затем создаст новый после принятия нового родительского продолжения)
- , если вы используете .saveAndFush (xx)мгновенно сбросит его
- , если вы не используете явные транзакции, он ведет себя немного иначе
2 Вы создаете сущность + хранилище для нее и вызываете метод .save, например,
@Entity
public class Artist {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
public interface ArtistRepository extends JpaRepository<Artist, Long> {}
, если оператор вставки не был выполнен успешно, он выдаст исключение.
3 Я думаю, что на это уже ответили 1
4 Я бы предложил использовать транзакции и позволить Spring позаботиться об этом, но это сильно зависит от потребностей вашего проекта.
Надеюсь, это немного поможет вам, но сначала вы просто делаете урок.