Как отловить исключение времени выполнения в модуле платформы NB? - PullRequest
0 голосов
/ 05 августа 2010

Как описано здесь , я хочу обновить базу данных пользователя с помощью перехвата исключения, которое возникает, когда классы сущностей не совпадают. Я понимаю, что могу добавить оператор catch к каждому методу db-интерфейса, но он подвержен ошибкам *. Другие «методы опроса» также возможны, но они не управляются прерываниями, как я хочу, через перехват исключений.

Я думаю, что я ищу, чтобы перехватить исключение до того, как оно будет доставлено пользователю (возможно, для аварийного завершения приложения). Я бы поставил там свой блок улова. Я бы поместил его в main () в не NB-приложении.

  • Насколько я понимаю, исключение выдается на основе сущности (т. Е. Метод, включающий только одну сущность, которая не изменилась, не вызовет исключений, хотя другие сущности изменились).

1 Ответ

0 голосов
/ 11 августа 2010

У меня была похожая проблема, но я думаю, что ее немного сложнее решить. Я использую JPA на стороне сервера, а сервер на самом деле является поставщиком веб-услуг.

Постоянство управляется контейнером, и, согласно настройкам моего приложения, оно использует стратегию «Создать». Конечно, каждый раз, когда я изменяю свои сущности и заново внедряю приложение, оно вызывает много исключений.

В конце концов я решил создать / перенести существующую базу данных в отдельный процесс. Это чтение метаданных, связанных с сущностями, и сравнение их с текущей базой данных.

После этого он создает сценарий миграции на тот случай, если схема БД отличается, чтобы она соответствовала новой схеме без потери какой-либо информации (сложность создания сценария миграции зависит от того, как вы планируете обрабатывать такие случаи, как изменения типов данных или удаление атрибутов ). Последний шаг - это повторное развертывание приложения (в вашем случае запустите его).

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

...