域类通常获得JPA或JAXB注释还是两者都获得?
我有一个Java企业应用程序,它提供了一个web服务、一个域层和一个hibernate持久层。在这种特殊情况下,我通过网络发送的对象、域对象和持久性对象之间(目前)没有很大的区别 目前,应用程序在持久性方面使用DTO,并使用JAXB注释对域类进行注释。然而,我读得越多,想得越多,这似乎越是倒退!(更不用说有很多代码支持DTO和域对象之间无意识的来回转换。)似乎大多数架构师都建议在域模型上添加JPA注释,并创建DTO以通过网络发送对象 在我的例子中,我可以在我的域类上同时添加JAXB和JPA(Hibernate)注释吗域类通常获得JPA或JAXB注释还是两者都获得?,jpa,annotations,dns,jaxb,Jpa,Annotations,Dns,Jaxb,我有一个Java企业应用程序,它提供了一个web服务、一个域层和一个hibernate持久层。在这种特殊情况下,我通过网络发送的对象、域对象和持久性对象之间(目前)没有很大的区别 目前,应用程序在持久性方面使用DTO,并使用JAXB注释对域类进行注释。然而,我读得越多,想得越多,这似乎越是倒退!(更不用说有很多代码支持DTO和域对象之间无意识的来回转换。)似乎大多数架构师都建议在域模型上添加JPA注释,并创建DTO以通过网络发送对象 在我的例子中,我可以在我的域类上同时添加JAXB和JPA(Hi
将我的web服务外观、域和持久性紧密捆绑在一起的想法似乎很容易维护,但确实让我担心,因为这些可能需要及时更改。但是,为web服务端创建一组DTO类,而为持久性端跳过DTO会更聪明吗?没有功能上的理由不使用JPA和JAXB注释来注释同一个类,我有时自己也这样做过。不过,这确实有点难以理解,有时您需要在JAXB和JPA之间进行不同的类设计权衡。根据我的经验,这些权衡通常意味着您最终会得到两个类模型。在同一个类上使用两个注释没有问题。我甚至倾向于鼓励这样做,因为这样,当发生更改时,您不必复制粘贴。
在某些情况下,某些属性的行为不同-例如,可能不需要封送自动生成的ID<然后将code>@xmltransive和
@Transient
组合在一起。读起来确实有点难,但也不太难,因为所有注释的含义显而易见。我同意使用相同的模型类是正确的方法。如果您担心注释混乱,可以使用JAXB实现(例如),该实现提供了一种将元数据外部化的机制: