Trong khi thực hiện loadtesting trên ứng dụng của chúng tôi, tôi nhận thấy rằng nếu bạn sử dụng @Transactional và @Cacheable chú thích rằng hibernate luôn tạo một giao dịch cơ sở dữ liệu. Có cách nào dễ dàng để ngăn chặn điều này không? Một cách eleberate hơn để giải quyết việc này trong mùa xuân là phải có sau lớp/giao diệnKết hợp hibernate @Transactional & ehcache @Cacheable luôn tạo ra giao dịch DB
- Servicelayer giao diện
- Cacheable lớp chú thích mà chỉ là một proxy/mong muốn
- giao dịch lớp chú thích implentation
Điều gì xảy ra sau đây
Gọi 1:
- Giao dịch được tạo ra
- phương pháp lớp được gọi
- kết quả cache & trở
Gọi 2:
- Giao dịch được tạo ra
- kết quả Cached được trở
Kết quả ưa thích nên:
Gọi 1:
- Giao dịch được tạo ra
- phương pháp lớp được gọi
- kết quả cache & trở
Gọi 2:
- kết quả Cached được trở
không phải là Hibernate đang tạo kết nối, đó là Mùa xuân thực hiện trước khi gọi phương thức mà bạn đã đánh dấu @Transactional –