JAXb, Hibernate and beans



目前我正在做一个使用Spring web-service、hibernate和JAXb的项目。

1)我已经使用IDE的hibernate代码生成生成hibernate bean,

2)此外,我还使用maven编译器生成了jaxb bean。

. .

现在,我的问题是,

1)这种方法正确吗?(有这么多豆子)。

2)我是否应该使用JAXb bean进行服务层的处理?如何保持层间的解耦?

3)或者,我是否需要创建另一组bean ?将(JAXb bean)映射到(新bean)到(hibernate bean)?

.

请告诉我你的看法?

谢谢,adi

你知道,你不可能让所有的东西都完全解耦。总会有一层知道其他两层。

通常当我设计三层架构时,比如:

  1. 服务层——可能使用JAXB,公开web服务或其他api的服务层
  2. 业务层-任何实际逻辑
  3. 持久化层- hibernate

我允许业务层了解服务层(JAXB)和持久性层(hibernate bean)。但是我不允许服务层和持久层相互了解。

注意:我是EclipseLink JAXB (MOXy)领导和JAXB 2 (JSR-222)专家组的成员。EclipseLink还提供了一个优秀的JPA实现(开源自TopLink)。

维护多个模型是有成本的。您添加的每个模型都引入了一个必须编写、测试和维护的bean到bean转换。

另一种方法是对JPA和JAXB绑定使用相同的bean。对于这个用例,从域模型开始并添加JAXB会更容易。JPA元数据将映射应用到XML和数据库。下面是利用单个模型创建RESTful web服务的示例:

  • http://blog.bdoughan.com/2010/08/creating - restful web服务——部分- 35. - html

由于EclipseLink同时提供JAXB和JPA实现,因此我们提供了许多扩展以使其更容易:

  • http://wiki.eclipse.org/EclipseLink/Examples/MOXy/JPA
  • http://blog.bdoughan.com/2010/07/jpa-entities-to-xml-bidirectional.html

回应:

同意你说的话。但是,使用相同的bean将会耦合代码非常紧密,并且将高度依赖。1的变化图层的其他地方也需要修改。你说什么?

这完全取决于你如何看待事物。我对构建数据访问服务的偏好是设计和构建一个坚实的领域模型。然后使用JPA和JAXB解决对象关系和对象xml之间的阻抗不匹配。

单一模型方法

为JPA和JAXB使用一个模型意味着当您对模型进行更改时,您需要在那时决定如何为JPA和JAXB处理它(这可能是好的,也可能是坏的)。如果您不希望模型中的每个新添加都影响JAXB映射,您可以利用JAXB概念,如@XmlAccessorType(XmlAccessType.NONE)

  • http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html

两个(或更多)模型方法

当您想要添加映射到关系和XML的字段时,您需要将其添加到两个模型并添加必要的转换逻辑。在这种情况下,保持模型解耦是有代价的。

最新更新