Hibernate execute()vs在末尾将对象设置为null

Hibernate execute()vs在末尾将对象设置为null,hibernate,Hibernate,我们正在处理循环中大量的实体对象。最后,我们将对象设置为null,以符合垃圾收集的条件 这是正确的还是我们需要使用hibernate execute() 收回对象与在循环结束时将对象标记为null有什么区别 请帮助详细了解 谢谢。仅将实体对象设置为null将没有帮助,因为在Hibernate的一级缓存中仍然会有对它的引用。因此,它将不符合垃圾收集的条件 当您逐出对象时,您将把它从hibernates缓存中取出,然后它将成为垃圾收集的候选对象 因此,如果希望对其进行垃圾收集,则必须将对象标记为nu

我们正在处理循环中大量的实体对象。最后,我们将对象设置为null,以符合垃圾收集的条件

  • 这是正确的还是我们需要使用hibernate execute()
  • 收回对象与在循环结束时将对象标记为null有什么区别
  • 请帮助详细了解


    谢谢。

    仅将实体对象设置为null将没有帮助,因为在Hibernate的一级缓存中仍然会有对它的引用。因此,它将不符合垃圾收集的条件

    当您逐出对象时,您将把它从hibernates缓存中取出,然后它将成为垃圾收集的候选对象

    因此,如果希望对其进行垃圾收集,则必须将对象标记为null(清除引用)并将其从hibernate的缓存中逐出(清除hibernate的引用)


    另外,除了释放内存空间(垃圾收集后),将实体从缓存中取出还可以节省大量CPU时间,因为每次进行新查询时,Hibernate都会对该缓存进行脏检查。

    处理
    @entity
    是否重要?另外,
    execute
    只是从缓存中删除对象,这样您只需保持entity manager缓存使用率较低。