【问题标题】:What is the lifetime of the JPA @Transient annotated fieldJPA @Transient 注释字段的生命周期是多少
【发布时间】:2018-01-05 20:20:03
【问题描述】:

我很难理解 JPA 的瞬态注释。我假设用 Transient 注释标注的字段将存储在本地缓存中,而不是持久保存在 DB 中。我基本上想知道什么时候会从本地缓存中清除它? 我将其用于表以存储其间歇状态,并在调用外部服务后返回的方法中使用此值。这是一个合适的用例吗?如果是这样,这种瞬态场的生命周期是多少?

【问题讨论】:

    标签: jpa transient


    【解决方案1】:
    @Entity
    class Sample {
      @Transient 
      String fieldOne;
    
      transient String otherField;
    }
    

    fieldOne 不是临时的(没有transient 关键字),所以是序列化的(到/从缓存、网络、文件或其他来源)。但是JPA不会将它存储在数据库中,因为注释拒绝。

    otherField 不可序列化,具有 transient 关键字(即从缓存引擎获取后,或网络可以/将为空),但在 JPA 数据库中以默认行为困扰

    这不是学术讨论,有时是有用的。通常是从其他人计算的值,或散列/加密/隐藏字段。

    【讨论】:

    • 感谢您的回复。在这个例子中,fieldOne 被赋值后的生命周期是多少?
    • 这是“普通”Java 字段,有缺口变化,并且“仅”不存储在数据库中。注释仅对 JPA 框架有意义(我希望)。因此,当将来通过从 bd 重新生成新实例时,将为 null
    • 这个答案是完全错误的。 JPA 也不会保留标记为 transient 的字段。对于阅读此问题的任何人,请参阅stackoverflow.com/questions/2154622/… 以获得更详细的解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2017-06-10
    相关资源
    最近更新 更多