Вы используете его в ситуациях, когда вам нужно создать класс для определенной цели внутри другой функции, например, в качестве слушателя, как runnable (для создания потока) и т. д.
Идея что вы вызываете их изнутри кода функции, чтобы вы никогда не ссылались на них в другом месте, поэтому вам не нужно их называть. Компилятор просто перечисляет их.
Они по сути являются синтаксическим сахаром и обычно должны перемещаться в другом месте по мере их роста.
Я не уверен, является ли это одним из преимуществ Java, хотя, если вы их используете (и мы все часто используем их, к сожалению), то вы можете утверждать, что они одни.
По-моему, Хранимые процедуры должны использоваться только для манипулирования данными, когда та же стандартная программа должна использоваться среди нескольких других приложений или для ETL между базами данных или таблицами, ничто больше. В основном сделайте столько в коде, сколько Вы можете, пока Вы не сталкиваетесь с принципом DRY или что Вы делаете, просто перемещает данные от одного места до другого в DB.
Представления могут использоваться для обеспечения альтернативного или упрощенного "представления" в данные. По сути, я пошел бы с целью, поскольку Вы действительно не управляете данными так же как нахождение другого метода отображения его.
Я использую представления для денормализации или произвожу форматирование и хранимые процедуры для фильтрации и манипулирования данными (вещи, которые требуют исходных данных параметра), или повторение (курсоры).
Я часто получаю доступ к представлению в хранимой процедуре, когда и денормализация и фильтрация требуются.
Не уверенный, если это - альтернативный выбор. Хранимые процедуры могут сделать большое разнообразие вещей, которые представления боролись бы (думайте, заполняя данные во временной таблице затем рабочий курсор на нем и затем делая агрегирование и возвращая набор результатов).
Представления, с другой стороны, могут скрыть комплекс sql / права доступа и представить измененное представление схемы.
Я думаю и имею место в схеме вещей, и оба полезны для успешной реализации схемы.