Olá tenho uma aplicação que usa na camada de Persistencia JPA tenha a interface Dao que e implementado pela classe concreta
GenericaJPADao desta forma:
public class GenericJPADao<T> implements Dao<T>{
private EntityManager entityManager; //Injetado por IoC
private Class persistenceClass;
public GenericJPADao(Class persistenceClass){
this.persistenceClass=persistenceClass;
}
public void delete(T entity) throws DaoException {
try {
entityManager.remove(entity);
} catch (IllegalStateException e) {
throw new DaoException(e);
}catch (IllegalArgumentException e) {
throw new DaoException(e);
}catch (TransactionRequiredException e) {
throw new DaoException(e);
}catch (Exception e) {
throw new DaoException(e);
}
}
Minha duvida e a seguinte olhando a API do JPA, este metodo delete pode lançar estas tres exception, mas eu nao quero que minha camada de Negocios conheça estas exception, entao criei DaoException, agora neste caso faz diferença fazer isto:
try {
entityManager.remove(entity);
}catch (Exception e) {
throw new DaoException(e);
}
}
Sei que isto eh ruim(coisa de preguiçoso), mas no caso acima nao vejo ganho nenhum a este. Logico que em outros locais quando quero alguma excessao em particular faço isso:
public void save(T entity) throws ConstraintViolationDaoException, DaoException {
try {
entityManager.persist(entity);
} catch (EntityExistsException e) {
throw new ConstraintViolationDaoException(e);
}catch (Exception e) {
throw new DaoException(e);
}
}
Mas no caso acima, achei igual fazer catch-exception para tudo.
O que acham desta abordagem?