3

我正在使用 netbeans 并使用它从数据库生成实体类。

我有一个在服务器计算机上运行并使用此实体类提供 Web 服务的项目。这些类用于其他管理器类,这些管理器类使用和转换来自实体类的信息。

我必须在服务器项目和客户端项目中使用这些管理器类。如果我创建一个包含管理器和实体类的库,我可以在这两个项目中使用它们。问题是在 Web 服务客户端调用的客户端项目中生成了一个新类,因此我将在客户端中有重复的逻辑 - 两个类将对应一件事 - 首先是库中的实体类,其次是从库中生成的类Web 服务客户端。

我怎样才能优雅地解决这个问题?

4

2 回答 2

0

不确定它是否是最优雅的解决方案,但您可以创建 DTO 对象层(抽象层)。然后,您将在您的库中包含并使用这些 DTO 以及您的管理器类。您不必将服务器端的实体类映射到这些 DTO 对象。并且还将客户端生成的对象映射到那些 DTO 对象。
优点是您的经理类现在独立于数据源。应该是因为您将它们与 DB 中的实体类一起使用一次,而与从 Web 服务返回的对象一起使用一次。这样对我来说似乎更干净。

于 2013-03-17T21:43:27.293 回答
0

首先,您应该针对接口而不是类编写依赖于客户端的代码。 请参阅此参考,它演示了如何指定客户端和服务器都必须实现的显式接口

也就是说:如果您在服务器端有必须在客户端(重新)使用的 JAXB 类,那么您将无法利用生成的客户端工件的优势。这并不意味着您不能使用 JAXB 类。

使用 JAX-WS Dispatch API 直接使用 JAXB 工件(WSDL 可选!)从您的客户端发送 Web 服务请求。

这是描述要求的参考。

这里有些例子:

于 2013-03-17T23:10:09.670 回答