Tôi hiện đang lăn ORM nhỏ của riêng mình và thấy mình phải đối mặt với nhiệm vụ tạo bản đồ chuẩn hóa để ngăn việc tải cùng một thực thể từ cơ sở dữ liệu nhiều lần.Làm cách nào để triển khai ánh xạ chuẩn hóa trong Java?
Cách tiếp cận hiện tại của tôi là sử dụng HashMap<Object, WeakReference<Object>>
. Khóa là khóa chính của thực thể cơ sở dữ liệu được ánh xạ (một ArrayList<Object>
nếu đó là khóa tổng hợp) và các giá trị là WeakReference<Object>
.
Vấn đề chính của tôi là làm thế nào để làm sạch bản đồ? Khi một đối tượng không được sử dụng nữa, tham chiếu yếu trong bản đồ sẽ đi null
và tôi sẽ chỉ khám phá điều này trong lần tra cứu tiếp theo (hoặc không bao giờ, nếu tôi không nhìn lại đối tượng). Tôi có thể làm cho các tài liệu tham khảo yếu đăng ký với một ReferenceQueue
khi họ nhận được xóa, và sau đó kiểm tra hàng đợi đó mỗi khi tôi nhìn cái gì đó lên. Các tham chiếu đã xóa sẽ không cho tôi bất kỳ gợi ý nào về đối tượng nào đã bị xóa, vì vậy tôi đoán tôi sẽ phải phân lớp WeakReference
để lưu khóa trong bản đồ, vì vậy tôi có thể xóa nó sau khi tham chiếu bị xóa.
Đây có phải là cách để đi hay không có cách nào đơn giản hơn để triển khai tính năng này?
Tôi đã do dự trước khi thêm thư viện này, nhưng bây giờ tôi đã làm, tôi tự hỏi tại sao tôi không làm điều đó sớm hơn. Cảm ơn câu trả lời tuyệt vời này! –