Java 使用SpringWeb服务将Hibernate映射程序拆分为前端和后端

Java 使用SpringWeb服务将Hibernate映射程序拆分为前端和后端,java,web-services,spring,hibernate,soap,Java,Web Services,Spring,Hibernate,Soap,我计划把我的系统分成前端和后端。目前,我的应用程序直接与数据库通信,但我想创建一个SpringWeb服务来代替它。我的问题在于使用Hibernate将对象映射到数据库表 我需要我的前端程序与数据库进行持久的最新交互。这同样意味着我必须编写大量web服务端点来处理所有查询和更新。这再一次使得Hibernate映射毫无意义,因为我没有得到任何东西 我的问题是:是否有一种经过验证且合理的方法(如果可能的话,通过SOAP)将hibernate映射对象传递到前端,然后提交对这些对象所做的更改?您可以通过S

我计划把我的系统分成前端和后端。目前,我的应用程序直接与数据库通信,但我想创建一个SpringWeb服务来代替它。我的问题在于使用Hibernate将对象映射到数据库表

我需要我的前端程序与数据库进行持久的最新交互。这同样意味着我必须编写大量web服务端点来处理所有查询和更新。这再一次使得Hibernate映射毫无意义,因为我没有得到任何东西


我的问题是:是否有一种经过验证且合理的方法(如果可能的话,通过SOAP)将hibernate映射对象传递到前端,然后提交对这些对象所做的更改?

您可以通过SOAP或其他序列化机制传递hibernate实体,但在延迟加载时应非常小心,集合从会话中加载和分离实体-否则,您可能会将所有数据库发送到只需要一个对象或hibernate代理的位置,而这些对象或代理在另一端不可用

简言之:没有

在不同的应用程序中分离和重新连接hibernate托管对象,就像您所想的那样,在处理完所有LazyLoadingException之后,将导致您想要避免的各种问题,例如并发性和锁定问题。这将是一个痛苦的b***


您将要走的路最终将通向一个体系结构,该体系结构通过在业务服务和这些业务服务的客户机之间传输,增加了额外的间接层。只有您的业务服务才能直接与数据库通信。显然,这很耗时,如果可能,必须避免。这就是为什么我要你解释你要解决的问题。

你为什么要这样做?你想解决哪一个问题?快速评论一下,我认为你可能正在向重用迈出一步。实现这一点的更好方法是将域对象放在一个jar中,并使用该域jar访问数据库。通过您的hibernate域。通过这种方式,可以使用webservice端点对使用hibernate域进行数据访问的业务服务进行建模。如果您使用的是Maven之类的东西,那么许多项目可以作为依赖项共享域jar。这种体系结构是太多“架构师”、“顾问”和太多政治的症状……真正的开发人员很少决定这样不必要的东西gymnastics@HansWesterbeek对不起,我的回答耽搁了。我的问题在于尽量减少在这方面的工作时间。我有一个数据库,需要管理相当广泛的模式。这就是为什么选择hibernate来映射它。现在,我将所有业务逻辑作为Java应用程序放在客户端(包括与数据库的通信和它的验证)。出于安全原因,我不得不将大量信息转移到后端。问题是,通过这样做,我发现自己不得不重写所有的服务。我想找一个抽象概念来绕开它。我明白了。。。在这种情况下,您将使用我描述的体系结构,在特定用例中根据“需要知道”向客户机公开对象和属性。此外,考虑使用REST /JSON代替SOAP,这可以节省一些时间。