当前位置: 首页 > 面试题库 >

Hibernate / JPA是否考虑了瞬态修饰符(而不是注释)

计向晨
2023-03-14
问题内容

我想避免序列化(在JMS / AMF中),但仍使用JPA / Hibernate保留该字段。

transient修改我的朋友?@Transient注释和transient修饰符是否相关?

Java规范明确指出,系统服务不会将瞬态字段保存到持久性存储中。但是hibernate是系统服务吗?(我不这样认为)
http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#78119

java.io.Serialisable接缝以指示需要对a out.writeObject and in.readObject进行序列化
http://download.oracle.com/javase/1.4.2/docs/api/java/io/Serializable.html

有见识吗?

也许我应该只写一个快速测试,但是我会对某种规格更加自信。

谢谢 !


问题答案:

transient修改我的朋友?@Transient注释和transient修饰符是否相关?

它们之间并没有 真正的 联系,但恐怕它们还是不会成为您的朋友,transientHibernate / JPA不会保留属性。JPA规范如下所示:

2.1.1持久字段和属性

持久性提供程序运行时可以通过JavaBeans样式属性访问器或实例变量来访问实体的持久状态。单一访问类型(字段或属性访问)适用于实体层次结构。使用注解时,映射注解在实体类的持久字段或持久属性上的放置将访问类型分别指定为基于字段的访问或基于属性的访问。

  • 如果实体具有基于字段的访问权限,则持久性提供程序运行时将直接访问实例变量。 没有注释的
    所有非transient实例变量Transient 都是持久性的。使用基于字段的访问时,实体类的对象/关系映射注释将对实例变量进行注释。
  • 如果实体具有基于属性的访问,则持久性提供程序运行时将通过属性访问器方法访问持久状态。未使用注释注释的所有属性
    Transient都是持久性的。属性访问器方法必须是公共的或受保护的。使用基于属性的访问时,实体类的对象/关系映射注释会注释getter属性访问器。
  • 映射注释不能应用于那些字段或属性transientTransient
  • 如果将映射注释应用于持久字段和属性,或者XML描述符指定在类层次结构中使用不同的访问类型,则该行为未指定。

参考文献

  • JPA 1.0规范
    • 2.1.1永久字段
  • Hibernate Core参考指南
    • 2.2.2。映射简单属性


 类似资料:
  • 问题内容: java函数System。 currentTimeMillis ()显然返回自1970年1月1日以来的秒数。但是,根据Wikipedia.org/wiki/Leap_second的说法,自1972年以来已经有25个leap秒。这意味着自1970年1月1日以来的实际秒数比单纯的计算所建议的秒数多25。是否系统。 currentTimeMillis ()会天真的计算而忽略the秒吗? 问题

  • 问题内容: 这是有关JPA Transient批注的以下问题的后续解答 为什么JPA具有@Transient批注? 我有一个我不想保留的瞬态变量,并用瞬态注释标记。但是,当我想从我的rest控制器生成JSON时,此瞬态变量在输出的JSON中不可用。 POJO PublicationVO直截了当,没有花哨的属性,只有一些具有getter和setter和1个瞬态变量的私有属性(已保留)。 The Pu

  • 这是关于JPA瞬态注释的以下问题的后续问题,为什么JPA有@Transient注释? 我有一个我不想保留的瞬态变量,它被标记为瞬态注释。但是,当我想从我的rest控制器生成JSON时,这个瞬态变量在输出的JSON中不可用。 POJO PublicationVO是直截了当的,没有奇特的属性,只有一些私有属性(持久化的),带有getter和setter以及1个瞬态变量。 出版物VO如下 当我在日志中看

  • 问题内容: 在Objective-C实例数据可以是,或。例如: 在Swift参考中,我还没有提到访问修饰符。是否有可能限制Swift中数据的可见性? 问题答案: 从 Swift 3.0.1开始 ,共有 4级访问权限 ,从最高(最低限制)到最低(最高限制)进行描述。 1. 和 允许在定义模块(目标)之外使用实体。指定框架的公共接口时,通常使用或访问。 但是, 访问权限仅适用于类和类成员,它与访问不同

  • 问题内容: 我作为一个初学者已经开始了一个Spring Rest项目。我的大多数实体都具有15-20个以上的属性,并且UI层上并非所有属性都是必需的。 我出于以下原因考虑使用DTO: 为了最大程度地减少出于信息隐私原因要发送的不必要信息。 减少json字符串的大小以提高性能。 使用同一实体的不同UI可能具有不同的业务验证(即,必填/可选字段)。我可以为同一实体创建2个DTO,并相应地注释验证。 我

  • 问题内容: 类允许客户获得实例的通常方法是提供一个公共构造器。另一种方法是提供一个公共的静态工厂方法,该方法只是一个返回类实例的静态方法。使用静态工厂方法的优缺点是什么? 问题答案: 《有效Java》一书中的这一章对此进行了很好的解释:考虑使用Static Factory而不是Constructors 。它以您可以理解的最佳方式说明了它们各自的优缺点。 只是引用本书的优点和缺点: 优点 : 静态工