Tôi không hiểu khi nào chế độ ngủ đông chạm vào bộ nhớ cache cấp thứ hai và khi nào nó làm mất hiệu lực bộ nhớ cache.
Đây là những gì tôi hiện đang hiểu:
- Bộ nhớ cache cấp hai lưu trữ các thực thể giữa các phiên, phạm vi là SessionFactory
- Bạn phải cho biết thực thể nào cần lưu vào bộ nhớ cache, không thực thể nào sẽ được lưu vào bộ nhớ cache theo mặc định
- Bộ nhớ cache truy vấn lưu trữ kết quả của các truy vấn trong bộ nhớ cache.
Điều tôi không hiểu là
- Khi nào thì hibernate nhấn bộ nhớ cache này?
- Giả sử tôi đã thiết lập bộ đệm ẩn cấp hai nhưng không phải bộ đệm truy vấn. Tôi muốn lưu vào bộ nhớ cache khách hàng của mình, có 50000 người trong số họ. Tôi có thể truy xuất khách hàng từ bộ nhớ cache bằng những cách nào?
- Tôi cho rằng tôi có thể lấy chúng bằng id từ bộ nhớ cache. Điều đó sẽ dễ dàng nhưng cũng không đáng để lưu vào bộ nhớ đệm. Nhưng nếu tôi muốn thực hiện một phép tính nào đó với tất cả khách hàng của mình. Giả sử tôi muốn hiển thị danh sách khách hàng thì tôi sẽ tiếp cận họ bằng cách nào?
- Làm cách nào để có được tất cả khách hàng nếu bộ nhớ đệm truy vấn bị tắt?
- Điều gì sẽ xảy ra nếu ai đó cập nhật một trong các khách hàng?
- Khách hàng đó sẽ bị vô hiệu trong bộ nhớ cache hay tất cả khách hàng sẽ bị vô hiệu?
Hay tôi đang nghĩ bộ nhớ đệm hoàn toàn sai? Điều gì sẽ là cách sử dụng thích hợp hơn của bộ đệm cấp hai trong trường hợp đó? Tài liệu về chế độ ngủ đông hoàn toàn không rõ ràng cách bộ nhớ đệm hoạt động trong thực tế. Chỉ có hướng dẫn về cách thiết lập nó.
Cập nhật: Vì vậy, tôi đã hiểu rằng bộ đệm cấp hai (không có bộ đệm truy vấn) sẽ tốt cho việc tải dữ liệu bằng id. Ví dụ: tôi có đối tượng người dùng mà tôi muốn kiểm tra quyền trong mọi yêu cầu trong ứng dụng web. Đây có phải là một trường hợp tốt để giảm quyền truy cập cơ sở dữ liệu bằng cách lưu vào bộ nhớ đệm người dùng trong bộ đệm ẩn cấp hai không? Giống như tôi sẽ lưu trữ id người dùng trong phiên hoặc bất cứ nơi nào và khi tôi cần kiểm tra quyền, tôi sẽ tải người dùng bằng id đó và kiểm tra quyền.