try{ Database.commit(); }catch(Exception ex){ logger.error("", ex); return false; }
となっていると、エラーが起きた際にエラーログは出されるが、Database.commit();が実行されたままになってしまうので、
try{ Database.commit(); }catch(Exception ex){ Database.rollback(); logger.error("", ex); return false; }
として、エラーが起きた際にDBをDatabase.commit();が行われる前に戻すロールバック処理をcatch句以下に加える必要がある。