Каково время жизни аннотированного поля JPA @Transient
Я с трудом пытаюсь понять переходную аннотацию JPA. Я предполагаю, что поля, помеченные аннотацией Transient, будут храниться в локальном кэше, а не сохраняться в БД. Я в основном хотел бы знать, когда он будет очищен из локального кэша? Я использую это для таблицы, чтобы сохранить ее прерывистое состояние, и я использую это значение в методе, который возвращается после того, как я вызываю внешнюю службу. Это подходящий вариант использования? Если так, каков будет срок службы такого переходного поля?
1 ответ
@Entity
class Sample {
@Transient
String fieldOne;
transient String otherField;
}
fieldOne
не является переходным (не имеет transient
ключевое слово), поэтому сериализуется (в / из кэша, сети, файла или других источников). Но JPA не будет хранить его в базе данных, потому что аннотация запрещена.
otherField
не seriazable, имеет transient
ключевое слово (т.е. после получения из механизма кэширования, или сеть может / будет иметь значение null), но указывается в базе данных JPA с поведением по умолчанию
Это не академическая дискуссия, иногда она полезна. Обычно значения вычисляются из других или хешированных / зашифрованных / скрытых полей.