我有一个使用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 ,到更深层次。
答案 0 :(得分:0)
使用实体管理器,您可以使用查询提示:
em.createNativeQuery( query )
.setHint( "org.hibernate.readOnly", true )
.getResultList();
或者您可以使用会话:
em.unwrap( OgmSession.class )
.createNativeQuery( query )
.setReadOnly( true )
.list();
请注意,如果您可以添加有关问题性质的更多详细信息,以及它是否是Hibernate OGM中的问题,我们可能会为其创建一个补丁。