Hibernate OGM - MongoDB:如何以只读模式检索数据以提高性能

时间:2017-08-09 09:47:46

标签: mongodb hibernate-ogm

我有一个使用Hibernate OGM框架和Mongo数据库的Java应用程序。当我检索大量数据时,应用程序变得非常慢,其中一个瓶颈就是Hibernate。

我读到只读上下文中的反向数据可以大大提高性能。我怎么能这样做?

我尝试过像这样的方法调用:

entityManager.lock(entity, LockModeType.READ);

或:

entityManager.createNativeQuery(query, entity)
.setLockMode(LockModeType.READ)
.getResultList();

但似乎没有支持。

我不能等待20分钟,几兆字节。请帮忙! 每个建议都表示赞赏

在我的情况下,我有一个一对多的关联树。查询位于根目录,其中fetch设置为 LAZY 。 然后我在一个线程中调用 Hibernate.initialize(proxy)方法,在第二级恢复 EAGER ,到更深层次。

1 个答案:

答案 0 :(得分:0)

使用实体管理器,您可以使用查询提示:

em.createNativeQuery( query )
  .setHint( "org.hibernate.readOnly", true )
  .getResultList();

或者您可以使用会话:

em.unwrap( OgmSession.class )
  .createNativeQuery( query )
  .setReadOnly( true )
  .list();

请注意,如果您可以添加有关问题性质的更多详细信息,以及它是否是Hibernate OGM中的问题,我们可能会为其创建一个补丁。