Spring Boot でのトランザクションの管理は、@Transactional アノテーションを使用して行うことができます。このブログ投稿では、@Transactional を使用してデータの一貫性を確保し、Spring Boot アプリケーションでのエラー処理を簡素化する方法を検討します。
@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