Если ваша комбинация - ejb с jpa, то все исключения jpa являются исключениями времени выполнения.
ejb обрабатывает 2 типа исключений 1) Исключение приложения 2) Системное исключение
Исключения приложений проверяются исключения, в основном мы используем бизнес-проверки и бизнес-правил.
Системные исключения являются исключениями времени выполнения, поэтому при возникновении каких-либо исключений во время выполнения контейнер ejb будет вмешиваться и преобразовывать исключение времени выполнения как удаленное исключение.
Например:
в слое дао
public void store(Cargo cargo) {
entityManager.persist(cargo);
}
Все исключения jpa являются исключениями только во время выполнения.
в слое ejb:
public TrackingId bookNewCargo(UnLocode originUnLocode,
UnLocode destinationUnLocode,
Date arrivalDeadline) {
Cargo cargo = new Cargo(trackingId, routeSpecification);
cargoRepository.store(cargo);
return cargo.getTrackingId();
}
в слое ejb, если произойдет какое-либо исключение во время выполнения, контейнер ejb вмешается и преобразуется в удаленное исключение.
На уровне интерфейса:
public String register() {
try {
String trackingId = bookingServiceFacade.bookNewCargo(
originUnlocode,
destinationUnlocode,
arrivalDeadline);
} catch (Exception e) {
throw new RuntimeException("Error parsing date", e);
}
так что вот так jpa -> ejb -> interface