一尘不染

Hibernate:刷新,逐出,复制和刷新

hibernate

我希望我知道此列表中每个项目的确切功能,工作原理,后果以及何时使用正确的时间。

  1. 刷新
  2. 驱逐
  3. 复制
  4. 冲洗

我什至不知道每个人的工作,但是我不确定,所以我要求您的帮助,因为我真的很想了解它。

我知道这是一个非常笼统的问题,但是我认为了解这一切真的很有用。

谢谢。


阅读 288

收藏
2020-06-20

共1个答案

一尘不染

Hibernate文档提供了很好的例证。另外,此博客文章还将为您提供一些见识。我将从下面添加一些行。

使用该方法可以随时重新加载对象及其所有集合refresh()。当使用数据库触发器来初始化对象的某些属性时,这很有用。

sess.save(cat);
sess.flush(); //force the SQL INSERT
sess.refresh(cat); //re-read the state (after the trigger executes)

有关更多示例,请参见此处

每当将对象传递给时save(), update() or saveOrUpdate(),以及每次使用检索对象时load(), get(), list(), iterate() or scroll(),都会将该对象添加到Session的内部缓存中。

flush()随后调用时,对象的状态将与数据库进行同步。如果您不希望发生这种同步,或者正在处理大量对象并且需要有效地管理内存,则evict()可以使用该方法从一级缓存中删除对象及其集合。

ScrollableResult cats = sess.createQuery("from Cat as cat").scroll(); //a huge result set
while ( cats.next() ) {
    Cat cat = (Cat) cats.get(0);
    doSomethingWithACat(cat);
    sess.evict(cat);     //  (if gives the compile time error then use it: sess.evict(cat.getClass());  
}

这里阅读完整的示例。

在此处阅读有关会话API的信息

2020-06-20