当前位置:  开发笔记 > 前端 > 正文

域类通常会获得JPA或JAXB注释吗?

如何解决《域类通常会获得JPA或JAXB注释吗?》经验,为你挑选了2个好方法。

我有一个Java企业应用程序,它提供了一个Web服务,一个域层和一个hibernate持久层.在这种特殊情况下,通过线路发送的对象,域对象和持久性对象之间(目前)没有太大差异.

目前,应用程序在持久性方面使用DTO,并使用JAXB注释注释Domain类.然而,我阅读和思考的越多,这似乎就越倒退了!(更不用说有很多代码可以支持DTO和Domain对象之间的无意识来回.)似乎大多数架构师建议在域模型上放置JPA注释并创建DTO以通过线路发送对象.

在我的情况下,我可以在我的域类中放置JAXB和JPA(Hibernate)注释吗?

保持我的Web服务外观,我的域和我的持久性都紧密捆绑在一起的想法似乎很容易维护,但确实让我担心,因为这些可能需要及时更改.但是为Web服务端创建一组DTO类并跳过持久化方面的DTO会更聪明吗?



1> skaffman..:

没有使用JPA和JAXB注释来注释同一个类的功能性原因,我有时会自己完成.但是,它确实有点难以阅读,有时您需要与JAXB和JPA进行不同的类设计权衡.根据我的经验,这些权衡通常意味着你最终得到两个阶级模型.


在这里,我再次将它们分开,因为我们的客户端webapp只想消耗它所需的数据,因此我们正在制作与我们的域(JPA)实体分开的DTO(使用JAX-B注释).
从某种意义上讲,你需要将它们分成几层.但在一个全新的项目中,它可以节省大量时间来组合它们.很高兴知道这样做没有不良副作用.

2> bdoughan..:

我同意使用相同的模型类是正确的方法.如果您担心注释混乱,可以使用JAXB实现(例如EclipseLink JAXB),该实现提供外部化元数据的机制:

http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink-OXM.XML

此外,由于您使用的是JPA模型,因此EclipseLink JAXB(MOXy)具有使这更容易的扩展:

http://bdoughan.blogspot.com/2010/07/jpa-entities-to-xml-bidirectional.html

http://wiki.eclipse.org/EclipseLink/Examples/MOXy/JPA

以下是使用JAXB和JPA的一个模型创建RESTful服务的示例:

第1部分 - 数据库

第2部分 - JPA实体

第3部分 - 使用JAXB将实体映射到XML

第4部分 - RESTful服务

第5部分 - 客户

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有