Java JAXB&;JPA注释。是否有任何强有力的论据支持优先使用字段访问而不是属性访问?

Java JAXB&;JPA注释。是否有任何强有力的论据支持优先使用字段访问而不是属性访问?,java,jpa,annotations,jaxb,Java,Jpa,Annotations,Jaxb,我正在启动一个使用JAXB和JPA注释的新项目。我饶有兴趣地阅读了讨论在单个类中混合JAXB和JPA注释的利弊的帖子 是否有任何指南说明何时使用字段级注释以及何时使用属性级注释,或者是否有任何参数说明通常选择一种方法而不是另一种方法?我发现字段级注释更干净、可读性更强;它们通常位于类的顶部,便于理解每个字段在不同上下文中的表示方式。除了关于可读性的争论之外,在决定注解的时候还有什么其他的事情要考虑吗?另一个优点是,你不必把所有字段都暴露为属性。如果没有很好的理由这样做,我通常更喜欢字段级注释。J

我正在启动一个使用JAXB和JPA注释的新项目。我饶有兴趣地阅读了讨论在单个类中混合JAXB和JPA注释的利弊的帖子


是否有任何指南说明何时使用字段级注释以及何时使用属性级注释,或者是否有任何参数说明通常选择一种方法而不是另一种方法?我发现字段级注释更干净、可读性更强;它们通常位于类的顶部,便于理解每个字段在不同上下文中的表示方式。除了关于可读性的争论之外,在决定注解的时候还有什么其他的事情要考虑吗?

另一个优点是,你不必把所有字段都暴露为属性。如果没有很好的理由这样做,我通常更喜欢字段级注释。

JPA经常在属性上使用延迟加载。如果您在JAXB中使用属性访问,那么它将在封送处理期间触发这些惰性属性

也为了支持延迟加载(或更改跟踪等)。一些JPA实现使用字节码操作将字段引入类以实现这一点。在使用这种类型的JPA实现时,将字段访问与JAXB结合使用可能会导致错误

与使用JAXB和JPA实体相关的一些参考资料:


因此,在JPA持久化实体上使用JAXB字段级访问可能会导致对无关数据进行编组?我还发现,JAXB和JPA注释的组合决定了它们在何处最有效地应用。需要考虑一些折衷。延迟加载是JPA的一个重要方面,因为它限制了实现到内存中的数据量。当然,延迟加载不会神奇地发生,它需要以某种方式实现。一些实现通过引入一个字段来处理这个问题(当然,为了安全起见,他们可以用@xmltransive来注释这个字段)。JPA实现不是唯一使用字节码操作的实现,只是与这个问题相关的实现。是的,如果使用字段访问并使用字节码生成来引入字段,那么JAXB实现将与这些字段交互。有趣的东西。谢谢你的链接。