Зачем в Java нужны transient поля?

Зачем в Java нужны transient поля? Когда поле должно быть transient, а когда обычным полем?

На сколько мне известно, ключевое слово transient при применении к полю указывает компилятору, что это поле не должно быть сериализованно (тобишь при сохранении состояния объекта в файл, сохранять значение этого поля ненужно). Это может понадобится, если поле является вычисляемым (результатом выполнения операции над другими полями) или же если поле не является частью постоянного состояния объекта. Например, у вас есть описание заказа пользователя, в котором есть поля описывающие элементы заказа (тип элемента, его цена и т.д.), а также поле totallSum в котором отображена общая сума заказа. Поле totallSum является вычисляемым и его необязательно сериализовать, а можно просто при десериализации переобчислить.