Я разрабатываю систему заказа, и вот мой сценарий: у меня есть класс, который содержит новые заказы, такие как стратегия «кэширования». В это время, я использую HashMap, как это:Is WeakReference Что мне нужно?
public static final Map<Long, Order> orders = new HashMap<Long, Order>();
Где я отождествляю заказ однозначно в long
(что не приходит из БД, это просто порядковым переменная). Причина, по которой я не сохраняю его из БД, заключается в том, что, например: сотрудник регистрирует заказ, поступающий с телефонного звонка, и вдруг клиент больше не хочет заказывать, так что я не буду заполнять свою БД неиспользуемым регистр. Исходя из этого, я ищу подход, чтобы держать все заказы и «чистить автоматически» индексы, которые больше не используются.
Я просмотрел WeakReference
, но я не знаю, действительно ли это действительно нужно. Я открыт для любого предложения.
Заранее спасибо.
Почему бы вам просто не хранить данные в объекте, когда сотрудник вводит их, и только сохранить их все в базе данных, когда клиент подтвердил заказ? В любом случае «длинный» id звучит так, будто он должен быть ключом на уровне базы данных, а не тем, что вы выбираете на уровне Java (если вы укажете AUTO_INCREMENT на своем id на db, вы получите гарантию согласованности бесплатно.) – berry120
Я бы рекомендовал использовать инструмент ORM, например Hibernate. Вы можете сохранить 'Order' в базу данных, когда они будут подтверждены. –
потому что: 1) одновременно может быть более одного сотрудника, регистрирующего заказы; 2) Я учу этот объект другими классами, так что мне нужно что-то однозначно идентифицировать каждый заказ Я думаю, что сохранение его в БД небезопасно, потому что каждый раз, когда пользователь открывает экран для регистрации заказа , создается новый порядок. Итак, если пользователь «misclick» будет иметь еще один неиспользуемый регистр в DB ... – lucasdc