Ho questo Spring Data CrudRepository
che gestisce le operazioni CRUD su un DB.Spring CrudRepository exceptions
@Repository
public interface IUserRepository extends CrudRepository<User, String> {
}
User
è l'entità di una tabella utente del mio DB. CrudRepository
aggiunge vale a dire le seguenti operazioni al repository:
delete(String ID)
findOne(String ID)
save(User user)
Come indicato nella documentation, l'operazione di cancellazione e trovare gettano IllegalArgumentException
nel caso in cui il dato id è null mentre l'operazione di salvataggio non genera alcuna eccezione.
Il problema è che il javadoc del CrudRepository non fa menzione delle altre eccezioni generate da queste operazioni. Ad esempio, non indica che l'operazione delete(String ID)
genera un EmptyResultDataAccessException
nel caso in cui l'ID fornito non esista nel DB.
Nella javadoc dell'operazione save(User user)
non è chiaro quali eccezioni vengono lanciate se si inserisce un nuovo utente che interrompe un vincolo di integrità dei dati (su campi univoci e chiavi esterne). Inoltre non ti avvisa se stai scrivendo un utente nuovo o esistente: crea semplicemente un nuovo utente o sovrascrive se esistente (quindi è un'operazione Insert + Update).
In un'applicazione enterprise dovrei essere in grado di catturare ogni eccezione lanciabile che un'operazione può generare e dovrei leggere a riguardo nel javadoc dell'operazione.
Conosci una documentazione chiara sulle eccezioni di CrudRepository?
Grazie
Apprezzare la fornitura di collegamenti a tutte le eccezioni e spiegare in dettaglio cosa significano. –
@vtor cosa intendi per "meccanismo di traduzione delle eccezioni incorporato". Sono curioso di sapere perché la documentazione di primavera non dice esplicitamente che alcuni metodi lanciano questa DataAccessException, ad esempio il metodo di salvataggio della classe CrudRepository. – fabrik