Java JPA: проверка выполнения, если Entity уже находится в БД - PullRequest
6 голосов
/ 03 января 2011

Каков наилучший способ / лучший способ проверить, находится ли объект в базе данных с использованием JPA?

Я пишу клиент, который добавляет информацию о хосте в БД. Например, прилагается хранилище LUNS, HBA и т. Д ...

Если я хочу добавить лун для хоста, я должен проверить, есть ли лун в базе данных. (Lun уже может быть подключен к другому хосту).

Я вижу 2 варианта:

  1. Я делаю выбор для Lun, чтобы проверить, находится ли он уже в БД
  2. Попробуйте вставить Lun и проверьте исключение (уникальное ограничение)

Есть ли у кого-то опыт с этим.

BR, Rene

Ответы [ 2 ]

7 голосов
/ 03 января 2011
entityManager.find(SomeEntity.class, id)

Возвраты: найденный экземпляр сущности или ноль, если сущность не существует

Это будет сделано просто в БД.Просто убедитесь, что ваши коллекции (если таковые имеются) ленивы.

4 голосов
/ 03 января 2011

Я думаю, что проверка исключения уникального ограничения - лучший способ.Подумайте о стоимости каждой вставки ...

...