我有一堆带注释的、相互关联的 POJO,我想通过 SOAP 创建/修改/搜索它们。我创建了一个实用程序来快速加载每个 POJO 的每个详细信息并创建一个 XML 字符串,以便我可以将整个 POJO 图作为搜索结果发送。尽管图非常小(少于三个节点),但急切加载花费了很长的时间(500ms/节点)。
看起来瓶颈是必须渴望每个节点的整个图。是否可以通过 SOAP 进行延迟加载?还有哪些其他替代方案?
最佳答案
可以通过 SOAP 进行延迟加载,但相当复杂。而且绝对不会更快:-)
基本上,您需要为 POJO 创建代理(使用字节码工具),该代理将知道如何通过 SOAP 加载完整对象(或者其单个属性,如果您想达到该级别)。如果这听起来像是在重复 Hibernate 所做的事情,那是因为它就是:-) 仅当客户端不太可能访问“远程惰性”属性时,这种方法才有意义,而且一开始就急切加载这些属性通常确实成本很高。
另一种可能的方法是向 SOAP API 调用添加“膨胀级别”参数,类似于 SELF(仅限直接属性)/CHILDREN(直接子级)/FULL(完整对象树),这将导致仅初始化适当的属性。这将获取正确膨胀的对象的责任委托(delegate)给客户端(大概知道它需要处理什么)。
关于java - 使用 SOAP 的惰性 Hibernate JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347560/