1. Java / Говнокод #6943

    +74

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    public void removeFromBase()
                throws SQLException{
            for(ServiceInstance serv: getServiceInstances())
                serv.removeFromBase();
            for(Pay pay: pays)
                pay.removeFromBase();
            String query;
            PreparedStatement ps = null;
            Connection connection = null;
            try{
                connection = TIDatasource.getInstance().getConnection();
                query = "DELETE FROM orders WHERE id=?";
                ps = connection.prepareStatement(query);
                ps.setLong(1, getId());
                int res = ps.executeUpdate();
                if(res != 1)
                    throw new SQLException("Unexpected number of orders have deleted: " + res);
            }catch(SQLException sqlex){
                throw new SQLException("Can't remove order from base because of error: " + sqlex);
            }finally{
                ps.close();
                connection.close();
            }
        }

    PRIMARY KEY(`id`)

    Запостил: volatile, 13 Июня 2011

    Комментарии (15) RSS

    • И это работает?
      Ответить
    • то ли леший нынче рьян, то ли воздух нынче пьян, то ли в ухе приключился у меня какой изъян... Кэп, приди на помощь, что здесь не так?
      выглядит как обычное удаление одной записи, все даже правильно, по-моему, по крайней мере, после 7ой строчки.
      Ответить
      • удваиваю
        Ответить
      • своим маленьким глазиком я вижу... начинается на букву К
        ключ
        Ответить
        • ? осталось ключ вставить в глазик и повернуть
          Ответить
          • своим маленьким глазиком я еще вижу... на букву И
            подбрасывание исключения
            Ответить
            • очевидно, для собственного сообщения вместо технического
              Ответить
              • в принципе резонно
                Ответить
                • правда, лично я в этом случае бы поменял и класс исключения на собственный, какой-нибудь ApplicationException. Бо SQLException воспринимается как именно "системное" исключение, а тут уже уровень выше.
                  Ответить
      • Когда-то видел тут разговор про rethrowing исключений.
        Многие сошлись на том, что это ужасно плохо.
        Ответить
        • техника из класса "when not sure - do not do it". Оверхед, и раздутие кода, да, но в некоторых ситуациях полезно
          Ответить
    • Выглядит как каскадное удаление. Если в рамках одной транзакции все идет - то нормально, если в разных - то действительно говно.

      Если комментарий PRIMARY KEY(`id`) намек на строчки 15-16, то проверка в 16-й строчке может выявить ошибку в бизнес логике (удаление уже удаленного объекта). Хотя конечно можно было бы прописать и явно if(res == 0) {...}
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий