gpt4 book ai didi

java - hibernate :刷新、驱逐、复制和刷新

转载 作者:行者123 更新时间:2023-11-29 19:09:40 26 4
gpt4 key购买 nike

我希望我知道这个列表中的每个项目到底是什么,它是如何工作的,后果是什么以及何时是正确的使用时间。

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

我什至想知道每个人的作用,但我不太确定,所以我请求你的帮助,因为我真的很想了解它。

我知道这是一个非常普遍的问题,但我认为了解这一切非常有用。

谢谢。

最佳答案

Hibernate Documentation 给出了很好的例子。还有这个blog post会给你一些见解。我将从下面添加一些行。

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

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

参见here了解更多示例。

每当您将对象传递给 save()、update() 或 saveOrUpdate() 时,以及每当您使用 load()、get()、list() 检索对象时, iterate() 或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());
}

阅读 here 中的完整示例.

了解 session API here .

关于java - hibernate :刷新、驱逐、复制和刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43186430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com