D
DerLudinator
Gast
Hallo,
ich möchte gerne, dass eine EJB eine Modifikation an einem Datensatz durchführt und anschließend diese in die Datenbank schreibt / updatet. Jetzt stellt sich mir die Frage, wie ich das mit der Fehlerbehandlung mache.
Sollte ich die RuntimeExceptions, die bei einem entityManager.merge(foo) auftreten können, in checked Exceptions packen in diese dann weiter werfen, sodass mein JSF-Frontend auf diese regieren kann? Oder sollte ich diese Runtimeexceptions (wie es ja eigentlich sein sollte) nicht behandeln und einfach die unchecked Exceptions fliegen lassen?
Ich bin da leider etwas verwirrt und habe noch nicht sehr viel Erfahrung mit sowas, zumalen ich das hier nur als ein Hobby betreibe
Hier mal die Methode meiner statefull-EJB:
In a nutshell: Lieber checked-Exceptions werfen und das FrontEnd dazu zwingen, auf den Fehler mit einem try-catch zu reagieren, oder lieber das FrontEnd mit RuntimeExceptions "bewerfen" und evtl. im Falle von JSF mit ExceptionHandlern bzw. Einträgen in der web.xml arbeiten?
Ich danke schonmal für alle, die mir Tipps geben können
P.s.: Erst zu Weihnachten bekomme ich mein erstes EJB-Buch, wie gesagt: Ist ein Hobby (das ich aber sehr ernst nehme)
ich möchte gerne, dass eine EJB eine Modifikation an einem Datensatz durchführt und anschließend diese in die Datenbank schreibt / updatet. Jetzt stellt sich mir die Frage, wie ich das mit der Fehlerbehandlung mache.
Sollte ich die RuntimeExceptions, die bei einem entityManager.merge(foo) auftreten können, in checked Exceptions packen in diese dann weiter werfen, sodass mein JSF-Frontend auf diese regieren kann? Oder sollte ich diese Runtimeexceptions (wie es ja eigentlich sein sollte) nicht behandeln und einfach die unchecked Exceptions fliegen lassen?
Ich bin da leider etwas verwirrt und habe noch nicht sehr viel Erfahrung mit sowas, zumalen ich das hier nur als ein Hobby betreibe
Hier mal die Methode meiner statefull-EJB:
Java:
public void editUserPassword(final String oldPassword, final String newPassword) throws UserPasswordWrongException{
Benutzer currentUser = getCurrentUser();
//Hashen
final String newPasswordHash = PasswortUtil.getSHA256(newPassword);
//Hashen
final String oldPasswordHash = PasswortUtil.getSHA256(oldPassword);
if(oldPasswordHash.equals(currentUser.getPasswort())){
currentUser.setPasswort(newPasswordHash);
}else{
throw new UserPasswordWrongException("User (" + currentUser.getBenutzername() + ") hat beim Versuch, sein Passwort zu ändern, ein falsches, altes Passwort eingegeben");
}
//Speichern (em ist ein per @PersistenceContext injiziierter EntityManager
em.merge(currentUser);
}
In a nutshell: Lieber checked-Exceptions werfen und das FrontEnd dazu zwingen, auf den Fehler mit einem try-catch zu reagieren, oder lieber das FrontEnd mit RuntimeExceptions "bewerfen" und evtl. im Falle von JSF mit ExceptionHandlern bzw. Einträgen in der web.xml arbeiten?
Ich danke schonmal für alle, die mir Tipps geben können
P.s.: Erst zu Weihnachten bekomme ich mein erstes EJB-Buch, wie gesagt: Ist ein Hobby (das ich aber sehr ernst nehme)