В JPA существует ли способ предотвратить создание экземпляра объекта более одного раза?

106
7

Если у меня есть экземпляр класса, такого как Учетная запись, может быть желательно предотвратить одновременное создание экземпляра, соответствующего одной учетной записи пользователя, несколько раз. Возможно ли использование JPA?

Чтобы уточнить, как предложил Эдвин: В системе есть несколько учетных записей. Когда кто-то войдет в систему, мы, вероятно, создадим экземпляр учетной записи этого лица, чтобы определить, какие привилегии у этого человека есть. Что делать, если системный администратор хотел получить доступ к той же учетной записи, возможно, изменив привилегии, пока владелец учетной записи все еще использует ее? Есть ли способ предотвратить это или есть способ уведомить администратор системы о том, что учетная запись была создана?

спросил(а) 2014-08-25T22:49:00+04:00 6 лет, 2 месяца назад
1
Решение
81

Смотря что ты имеешь в виду. Способ работы JPA уже гарантирует, что когда вы запрашиваете сущность для своего менеджера объектов во время данной транзакции, вы всегда будете получать одну и ту же сущность.

Таким образом, сущности привязаны к существованию их контекста, и в JPA существуют разные типы контекстов.

См. Раздел 7 " Спецификация JPA 2.1" в разделе "Менеджеры сущностей и контексты устойчивости".

Теперь это не помешает кому-либо создавать экземпляры вашего класса и использовать их по своему усмотрению. Или у вас есть отдельные элементы в вашем приложении. Например, до того, как вы сохраняете новый объект, он отсоединяется и не контролируется менеджером сущности.

Вы можете рассмотреть раздел 3.2 "Жизненный цикл экземпляра объекта" в той же спецификации, о которой говорилось выше.

Итак, возможно, вы должны сказать нам, что вы хотите сделать, и мы могли бы помочь с идеями о том, как это сделать. Вместо того, чтобы дать нам то, что вы считаете ответом. Начните с описания того, что, по вашему мнению, является проблемой, которую, по вашему мнению, можно решить, если вы можете помешать JPA предоставлять несколько/разных экземпляров данного объекта.

ответил(а) 2014-08-25T22:58:00+04:00 6 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема