Bạn đang học Java Backend và muốn nâng cấp kỹ năng? Trong bài viết này, bạn sẽ tìm thấy:
- Cách quản lý transaction trong Spring.
- Kỹ thuật caching để tăng tốc API.
- Exception handling theo chuẩn REST.
- Logging hiệu quả để debug và tối ưu.
👉 Tham khảo thêm: Khóa học Java Backend tại CodeGym
Nội dung
Vì sao cần tối ưu API và transaction?
- API chậm khiến trải nghiệm người dùng kém.
- Transaction lỗi dẫn đến mất dữ liệu hoặc inconsistency.
- Thiếu logging gây khó khăn khi debug production.
Việc tối ưu đúng cách giúp backend Java:
✔️ Nhanh hơn
✔️ An toàn dữ liệu
✔️ Dễ bảo trì, mở rộng
1. Transaction trong Spring Boot
1.1. Dùng @Transactional đúng cách
- Áp dụng cho service layer, không đặt ở controller.
- Ví dụ:
@Transactional
public void transferMoney(Long fromId, Long toId, BigDecimal amount) {
accountRepository.debit(fromId, amount);
accountRepository.credit(toId, amount);
}
1.2. Isolation level
- READ_COMMITTED: an toàn cho hầu hết ứng dụng.
- REPEATABLE_READ: khi cần đọc dữ liệu ổn định trong cùng transaction.
- SERIALIZABLE: cao nhất nhưng chậm.
1.3. Rollback chiến lược
- Spring rollback mặc định với RuntimeException.
- Có thể chỉ định rollback với exception cụ thể:
@Transactional(rollbackFor = {SQLException.class})
2. Tối ưu hiệu năng API với Caching
2.1. Dùng Spring Cache
- Kích hoạt caching:
@EnableCaching
@SpringBootApplication
public class App {}
- Cache kết quả method:
@Cacheable("users")
public User getUserById(Long id) { ... }
2.2. Chọn backend cache
- In-memory (ConcurrentMap): cho demo, nhỏ.
- Redis: production, phân tán, tốc độ cao.
3. Exception Handling trong REST API
3.1. Dùng @RestControllerAdvice
- Tạo Global Exception Handler:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<?> handleNotFound(ResourceNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Map.of("error", ex.getMessage()));
}
}
3.2. Lợi ích
- Trả response JSON nhất quán.
- Dễ log lỗi và monitor.
4. Logging hiệu quả
4.1. Dùng SLF4J + Logback
@Slf4j
@Service
public class UserService {
public void process() {
log.info("Start process");
try {
// logic
} catch (Exception e) {
log.error("Error processing", e);
}
}
}
4.2. Quy tắc logging
- INFO: luồng chính.
- WARN: bất thường nhưng không dừng hệ thống.
- ERROR: lỗi nghiêm trọng.
- Tránh log dữ liệu nhạy cảm (mật khẩu, token).
Kết luận
Tối ưu API và transaction trong Java Backend giúp ứng dụng nhanh – ổn định – dễ mở rộng. Hãy nhớ
- Transaction chuẩn với @Transactional.
- Cache dữ liệu thông minh.
- Exception handling thống nhất.
- Logging chi tiết, gọn gàng.
4-tru-cot-toi-uu-API-transaction
👉 Muốn nắm chắc Java Backend từ căn bản đến nâng cao?
Tham gia Bootcamp Java Backend tại CodeGym để học cùng mentor và thực hành dự án thực tế.
FAQ – Tối ưu API & Transaction Java
- Dùng transaction khi nào?
Khi có nhiều thao tác DB cần đảm bảo toàn vẹn dữ liệu. - Caching có bắt buộc không?
Không bắt buộc, nhưng rất cần để tối ưu API. - Exception nên xử lý ở đâu?
Ở global handler (@RestControllerAdvice) để đồng bộ. - Logging nhiều có làm chậm app không?
Có, nếu log quá chi tiết. Nên cân bằng INFO/DEBUG. - Redis có cần thiết không?
Nếu app có traffic cao hoặc phân tán, Redis là lựa chọn tốt.
0 Lời bình