gpt4 book ai didi

java - MVC 中 Hibernate 延迟属性初始化的最佳实践?

转载 作者:行者123 更新时间:2023-12-02 02:58:59 24 4
gpt4 key购买 nike

假设我使用伪代码中的某个实体:Article { id,author,text,date},所有属性均延迟初始化。我有存储库方法:

@Transactional
Article loadArticle(int id) {
return articeRepository.find(id);
}

由不同的 Controller 使用。 PreviewController 需要 authordateViewController 需要文本日期。我应该将 boolean 参数 initAuthor、initText、initDate 传递给 loadArticle() 方法来为每个属性调用 Hibernate.initialize() 吗?或者我应该将 @Transactional 移动到 Controller 的方法中?处理延迟初始化的最佳实践是什么?

最佳答案

如果您的目标是拥有一个高性能的数据访问层,那么您应该记住一件事:每个用例都是不同的,因此需要不同类型的数据。

我想建议的是,您希望针对不同的用例使用不同的方法,仅获取所需的数据。

有多种方法可以做到这一点:

  1. 通过获取连接获取实体关系
  2. 创建只读投影

我更喜欢后者,因为它清楚地表明它是用于显示数据而不是修改数据。

对于预测,Spring Data JPA可以提供帮助,因为它有一个开箱即用的解决方案,基本上就是定义一个接口(interface)。

如果您使用Hibernate.initialize()或任何其他方式来触发加载实体关系,实际上您将触发数据库查询。如果您考虑 100 个实体,这意味着您将执行 101 个查询。使用获取或只读投影。

关于java - MVC 中 Hibernate 延迟属性初始化的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42648394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com