Управление транзакциями в Spring Boot можно осуществлять с помощью аннотации @Transactional. В этом сообщении блога мы рассмотрим, как использовать @Transactional для обеспечения согласованности данных и упрощения обработки ошибок в приложениях весенней загрузки.
Чтобы использовать @Transactional, вы обычно размещаете его в методах класса обслуживания, в котором вы хотите использовать транзакционное поведение.
import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class UserService{ @Transactional public void createUser() { // enter your transactional code here } }
Вы можете указать уровни распространения и изоляции транзакции, чтобы контролировать ее поведение:
Распространение: определяет поведение транзакции, когда существующая транзакция уже выполняется.
Изоляция: определяет уровень видимости данных транзакции.
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) public void createUser() { // enter your transactional code here }
Вы можете указать, какие исключения должны вызывать откат:
@Transactional(rollbackFor = Exception.class) public void createUser() { // your transactional code here }
Если ваш метод только читает данные и не выполняет никаких операций записи, вы можете пометить его как доступный только для чтения для оптимизации производительности:
@Transactional(readOnly = true) public void getUser() { // your read-only code here }
Вы также можете разместить @Transactional на уровне класса, чтобы применить его ко всем методам в классе:
@Service @Transactional public class UserService { public void getUser() { // transactional code } public void createUser() { // transactional code } }
import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class UserService { @Transactional public void saveUser() { // code to save data } @Transactional(readOnly = true) public void fetchUser() { // code to fetch data } @Transactional(propagation = Propagation.REQUIRES_NEW) public void newTransaction() { // code to execute in a new transaction } @Transactional(rollbackFor = {CustomException.class}) public void performWithRollback() { // risky code that may throw CustomException } }
Использование @Transactional Spring Boot позволяет вам управлять транзакциями декларативно, точно определяя, как вы хотите, чтобы транзакции вели себя в различных сценариях. Это помогает обеспечить согласованность данных и упрощает обработку ошибок в ваших приложениях.
https://www.baeldung.com/spring-transactions-read-only
https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html
Github: https://github.com/tharindu1998/transactional-blog
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3