Hibernate:冗长的ArrayList的持久性优化

问题描述 投票:1回答:1

我在数据库使用中遇到了多个瓶颈。我正在使用通过Hibernate ORM访问并用Java 8编写的PostgreSQL。

这里是需要优化的类的示例:

public class RightEntity {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @ElementCollection
  @LazyCollection(LazyCollectionOption.FALSE)
  private List<Long> readableEntity = new ArrayList<Long>();
}

RightEntity是一个对象,它允许访问Ids列表(Long列表)。问题是,每当我加载该实体时,包含数百个元素的列表可读实体可能会同时花费几秒钟的时间。这是一个巨大的瓶颈,因为它几乎用在我服务器的每个API和管理器中。

我的问题是:如何优化此代码以使其运行更流畅?

LazyCollectionOption.FALSE与FetchType.Eager相似我尝试过懒地加载它,它运行起来快得多,但是每当尝试加载列表时,我最终都会得到一个LazyCollection,因此我正在研究替代方法或修复方法。

谢谢!

java postgresql hibernate jpa persistence
1个回答
1
投票

[[0]有一种机制可以正确访问惰性集合。您可以在JPQL查询中使用它来填充惰性集合。

请看Hibernate开发人员的JOIN FETCH说明。您也可以查看this SO问题以了解使用批处理的替代方法。

© www.soinside.com 2019 - 2024. All rights reserved.