Hibernate 在具有Web服务和SOAP的客户机/服务器应用程序中使用惰性属性
我们有一个巨大的客户机/服务器应用程序。服务器公开多个Web服务,其中大多数服务检索/填充复杂业务模型的不同部分 目前没有延迟功能,因此每次发出请求时都会检索并返回完整模型,即使客户端只需要一个属性值Hibernate 在具有Web服务和SOAP的客户机/服务器应用程序中使用惰性属性,hibernate,web-services,soap,lazy-loading,Hibernate,Web Services,Soap,Lazy Loading,我们有一个巨大的客户机/服务器应用程序。服务器公开多个Web服务,其中大多数服务检索/填充复杂业务模型的不同部分 目前没有延迟功能,因此每次发出请求时都会检索并返回完整模型,即使客户端只需要一个属性值 例如,考虑下一个模型图: 然后,我们提供了一项服务,根据不同的标准获取模型: 数十个客户使用这些方法,但每个客户都需要填充模型的不同部分。由于我们没有延迟加载功能,所以即使客户端可能只需要一个属性值,我们也会在每次调用时检索完整的模型。这增加了服务器从DB查询信息所需的时间以及序列化/反序列化
例如,考虑下一个模型图:
然后,我们提供了一项服务,根据不同的标准获取模型: 数十个客户使用这些方法,但每个客户都需要填充模型的不同部分。由于我们没有延迟加载功能,所以即使客户端可能只需要一个属性值,我们也会在每次调用时检索完整的模型。这增加了服务器从DB查询信息所需的时间以及序列化/反序列化对象所需的时间 在服务器中,我们使用Hibernate,但由于客户端上缺少功能,因此一切都很紧迫我们如何通过SOAP Web服务实现这种机制?已经有可用的吗?我希望有几个选项
第一个选项看起来是最合理的,但是你必须考虑服务器上的其他受影响的服务和重新实现的时间。
你需要在休眠侧做这件事。延迟加载模型不是SOAP函数,而且在SOAP世界中没有任何东西支持它。简而言之,它将是一个自定义函数。您可以在Hibernate中使用结果分页。此外,您还需要了解为什么这些设计会吸引一切。回答起来有点难。谢谢你的回答。第一种方法的问题是,GetModelA(FilterA)webservice方法有几十个客户端,每个客户端都需要来自ModelA的不同数据集。目前无法将这些需求传达给服务器,当惰性属性达到序列化边界时,它们就会丢失。对于第二种方法,我们有一个类似的问题,因为无法向服务器传达哪些内容可以过滤掉,哪些内容不能过滤掉,如果我们能够传达,我们应该选择选项1。我同意,您需要在第一步中重新设计SOAP服务接口,以便客户机能够以某种方式指示他/她将需要的数据。也许您可以提出一个具有新服务规范的版本2.0,以便在使用选项1或2anda que hablando en inglés con un maño;)重新实现服务器服务时,可以逐步迁移到客户端加西亚,法国大豆,加泰罗尼亚和卡斯特拉诺,我要去墨西哥目前无法将这些需求传达给服务器
,需要哪些?你说的是客户的需求吗?如果是的话,那么,如果服务器不知道客户想要什么,那么就没有办法阻止服务器加载整个模型!!!