我目前有工作代码将孩子保存到父实体。但是我想知道我是否做对了,因为我现在通过休眠的选择语句过载。我确实使用缓存,所以 atm 我没有延迟问题,但我想知道我是否不能提高效率。以这个小摘录为例
MbaLog.debugLog(logger, "Saving CodeType");
Site site = codeType.getSite();
if (site != null && site.isProxy())
codeType.setSite(siteRepository.loadSiteById(site.getId()));
Long recordId = codeRepository.saveCodeType(codeType);
我有一个要保存的实体 CodeType,它有一个子站点。这个子对象作为代理对象传递给方法,只填充了它的 id。然后我从数据库中获取一个完全加载的 Site 对象并将其设置为代码类型。接下来,我将带有 hibernate 的 sessionfactory 的 codeType 保存到数据库中(代码在这里不可见,但它在 codeRepository 后面)。
这可行,但我正在加载一个完整的站点,它有自己的孩子,所以我看到在插入之前至少有 5 个查询通过。我可以在网站上放很多懒惰的东西,但目前我宁愿不这样做,因为更深层的代码可能会很复杂。我不得不在工作中学习hibernate和JPA,过去从未接受过专家的太多培训。所以我想知道,是否有将网站保存为 codetype 的快捷方式?我需要完全加载它还是 id 足够?或者只是 id 和版本(我在所有实体上使用 @version 注释进行乐观锁定)
提前致谢