Java 我们如何减少不必要的物品装载?

Java 我们如何减少不必要的物品装载?,java,performance,hibernate,orm,Java,Performance,Hibernate,Orm,在hibernate和简单的ORM策略中,我通常加载对象的所有值。有没有办法避免这种情况。 因此,我的应用程序运行缓慢。有几种方法可以实现这一点: 启用缓存。虽然SQL不会改变,但Hibernate将比较来自数据库的结果并重用现有对象。这并没有带来巨大的提升,但实现和维护起来很简单 创建第二个映射(相同的表、不同的对象)以仅加载值的子集 将很少使用的数据移动到第二个表中 使用自定义本机SQL查询加载对象。在这里,您必须确保您知道加载了多少以及如何“填补空白” 有几种方法可以实现这一点: 启用

在hibernate和简单的ORM策略中,我通常加载对象的所有值。有没有办法避免这种情况。
因此,我的应用程序运行缓慢。

有几种方法可以实现这一点:

  • 启用缓存。虽然SQL不会改变,但Hibernate将比较来自数据库的结果并重用现有对象。这并没有带来巨大的提升,但实现和维护起来很简单

  • 创建第二个映射(相同的表、不同的对象)以仅加载值的子集

  • 将很少使用的数据移动到第二个表中

  • 使用自定义本机SQL查询加载对象。在这里,您必须确保您知道加载了多少以及如何“填补空白”


    • 有几种方法可以实现这一点:

      • 启用缓存。虽然SQL不会改变,但Hibernate将比较来自数据库的结果并重用现有对象。这并没有带来巨大的提升,但实现和维护起来很简单

      • 创建第二个映射(相同的表、不同的对象)以仅加载值的子集

      • 将很少使用的数据移动到第二个表中

      • 使用自定义本机SQL查询加载对象。在这里,您必须确保您知道加载了多少以及如何“填补空白”


      Hibernate参考文档中有一章介绍了。您可以查看您的抓取策略或使用缓存是否会提高性能


      更具体地说,您需要提供有关应用程序以及如何使用通过ORM加载的对象的更多详细信息。

      Hibernate参考文档中有一章介绍了。您可以查看您的抓取策略或使用缓存是否会提高性能


      更具体地说,您需要提供有关应用程序的更多详细信息,以及如何使用通过ORM加载的对象。

      在yoru实体映射中使用FetchType.LAZY。 i、 e:


      在yoru中,实体映射使用FetchType.LAZY。 i、 e:


      通常是加载依赖对象导致ORM性能下降。您需要根据需要导致另一次提取的子属性的可能性设置提取策略。例如,检索地址对象或订单集合的person对象。地址可能是必需的,所以加载它,但命令可能不是,所以不要太过激进。通常是加载依赖对象导致ORM性能下降。您需要根据需要导致另一次提取的子属性的可能性设置提取策略。例如,检索地址对象或订单集合的person对象。地址可能是需要的,所以加载它,但订单可能不是,所以不要太激进。
      @Entity
      public class MyEntity {
      
      private List<MyAnotherEntity> values;
      
      @ManyToOne(fetch = FetchType.LAZY)
      public List<MyAnotherEntity> getValues() {
       return values;
      }
      
      
      }
      
      Criteria c = createCreteria(entityManager, MyEntity.class);
      c.setFetchMode("values", FetchMode.JOIN);