ทรานแซกชัน Spring
การจัดการทรานแซกชันด้วย @Transactional, propagation, isolation, rollback, PlatformTransactionManager
1บทบาทหลักของ annotation @Transactional ใน Spring คืออะไร?
บทบาทหลักของ annotation @Transactional ใน Spring คืออะไร?
คำตอบ
@Transactional ระบุว่าเมธอดควรทำงานภายในบริบทของทรานแซกชัน เพื่อรับประกันความเป็นอะตอมของการดำเนินการกับฐานข้อมูล Spring จะสร้าง AOP proxy รอบ ๆ คลาสโดยอัตโนมัติเพื่อจัดการการเริ่มต้น commit และ rollback ของทรานแซกชัน แนวทางเชิงประกาศนี้ช่วยลดความซับซ้อนของการจัดการทรานแซกชันได้อย่างมากเมื่อเทียบกับการเขียนโปรแกรมด้วยตนเองด้วย TransactionTemplate หรือ PlatformTransactionManager
2ประเภท propagation เริ่มต้นสำหรับ @Transactional คืออะไร?
ประเภท propagation เริ่มต้นสำหรับ @Transactional คืออะไร?
คำตอบ
Propagation.REQUIRED เป็นประเภท propagation เริ่มต้น ด้วยกลยุทธ์นี้ Spring จะเข้าร่วมทรานแซกชันที่มีอยู่หากมี หรือสร้างทรานแซกชันใหม่หากไม่มี นี่เป็นพฤติกรรมที่พบบ่อยและเข้าใจง่ายที่สุดสำหรับกรณีการใช้งานส่วนใหญ่ โดยรับประกันว่าจะมีทรานแซกชันอยู่เสมอสำหรับการดำเนินการกับฐานข้อมูล
3จะเกิดอะไรขึ้นหากมีการโยน RuntimeException ในเมธอด @Transactional?
จะเกิดอะไรขึ้นหากมีการโยน RuntimeException ในเมธอด @Transactional?
คำตอบ
โดยค่าเริ่มต้น Spring จะทำการ rollback ทรานแซกชันโดยอัตโนมัติเมื่อมีการโยน RuntimeException (หรือ Error) ออกมา ซึ่งรับประกันว่าการแก้ไขฐานข้อมูลจะถูกยกเลิกในกรณีที่เกิดข้อผิดพลาดที่ไม่คาดคิด ในทางตรงกันข้าม checked exception (ที่สืบทอดจาก Exception แต่ไม่ใช่ RuntimeException) จะไม่ทริกเกอร์ rollback โดยค่าเริ่มต้น เว้นแต่จะระบุไว้อย่างชัดเจนด้วย rollbackFor
annotation @Transactional สามารถใช้กับที่ใดได้บ้าง?
Propagation.REQUIRES_NEW มีพฤติกรรมอย่างไร?
+27 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Spring Boot อื่นๆ
Spring Core - IoC & DI
Spring Boot Auto-Configuration
Spring Boot Starters
Application Properties & YAML
การทำ Logging ด้วย SLF4J และ Logback
Spring Boot DevTools
Spring MVC Basics
Spring REST Controllers
Request & Response Handling
การจัดการข้อยกเว้น
Bean Validation
พื้นฐาน Spring Data JPA
เอนทิตี JPA และความสัมพันธ์
การสืบค้น JPA
Spring Data Repositories
พื้นฐาน Spring Security
Spring Boot Actuator
การทดสอบหน่วยด้วย JUnit และ Mockito
การทดสอบ Spring Boot
Profiles และ Environment
RestTemplate และ WebClient
Async และ Scheduling
Caching ด้วย Spring
Spring WebFlux (Reactive)
การยืนยันตัวตนและการให้สิทธิ์ขั้นสูง
JWT และความปลอดภัยแบบ Stateless
OAuth2 และ Authorization Server
Spring Boot และ Docker
Microservices ด้วย Spring
Spring Cloud Config
การเพิ่มประสิทธิภาพการทำงาน
GraalVM Native Images
เชี่ยวชาญ Spring Boot สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี