JAXb,Hibernate和bean

时间:2011-10-26 07:33:10

标签: java hibernate jaxb

目前我正在开发一个使用Spring web-service,hibernate和JAXb的项目。

1)我使用IDE'hibernate代码生成

生成了hibernate bean

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

..

现在,我的问题是,

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

2)我应该使用JAXb bean来处理服务层吗?如何保持图层分离?

3)或者,我是否需要创建另一组bean,即。 map(JAXb bean)到(新bean)到(hibernate bean)?

请说出你的意见?

谢谢, ADI

2 个答案:

答案 0 :(得分:5)

你知道,你不可能把所有东西完全解耦。总会有一层知道另外两层。

通常在我设计3层架构时,如:

  1. 服务层 - 可能使用JAXB的那个,公开Web服务或其他API
  2. 业务层 - 任何真实的逻辑
  3. 持久层 - 休眠
  4. 我允许Business层了解服务层(JAXB)和持久层(hibernate bean)。但我不允许服务层和持久层相互了解。

答案 1 :(得分:3)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB 2 (JSR-222)专家组的成员。 EclipseLink还提供了出色的JPA implementation(来自TopLink)。

维护多个模型需要付出代价。您添加的每个模型都会引入必须编写,测试和维护的bean-to-bean转换。

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

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


<强>更新

回应:

  

同意你所说的话。但是,使用相同的bean会结合使用   代码非常紧密,并且将高度依赖。改变一个   层也需要在其他地方进行更改。你说什么?

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

一种模式方法

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

两种(或更多)模型方法

如果要添加映射到关系和XML的字段,则需要将其添加到两个模型并添加必要的转换逻辑。在这种情况下,保持模型解耦是有成本的。