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

Ant*_*val 6 java serialization persistence hibernate jpa

我想避免序列化(在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

任何见解?

也许我应该写一个快速测试,但我会对一个规范更有信心.

谢谢 !

Pas*_*ent 6

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

它们并没有真正相关,但我担心它们不会成为你的朋友,transientHibernate/JPA不会保留属性.JPA规范如下:

2.1.1持久字段和属性

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

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

...

参考

相关问题