Бросать EntityExistsException программно - плохая практика? - PullRequest
0 голосов
/ 11 июня 2018

Я использую JPA и хочу выдать исключение, когда кто-то пытается изменить существующую сущность.Могу ли я выбросить javax.persistence.EntityExistsException или мне следует подумать о создании собственного типа исключения?Что считается лучшей практикой?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Похоже, что вы хотите сделать, это оптимистическая блокировка, чтобы предотвратить одновременную транзакцию обновления одной записи.

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

0 голосов
/ 11 июня 2018

Учитывая, что JavaDoc явно говорит

Брошенный провайдером постоянства, когда вызывается EntityManager.persist(Object) и сущность уже существует

Iсказал бы, что выбрасывать его в любой другой ситуации неправильно.


Что касается того, нужно ли создавать собственный тип исключения, это основано на мнении.Я очень редко нахожу какую-либо ценность в этом, если мне не нужно поймать что-то очень конкретное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...