Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠:刷新、逐出、复制和刷新_Java_Hibernate - Fatal编程技术网

Java 休眠:刷新、逐出、复制和刷新

Java 休眠:刷新、逐出、复制和刷新,java,hibernate,Java,Hibernate,我希望我知道这个列表中的每一项具体是什么,它是如何工作的,结果是什么,什么时候是正确的使用时间 刷新 驱逐 复制 冲洗 我甚至想知道每个人都做了什么,但我不是绝对肯定,所以我请求你的帮助,因为我真的想了解它 我知道这是一个相当普通的问题,但我认为了解这一切真的很有用 谢谢。这个就是很好的例子。这也会给你一些见解。我将从下面添加一些行 可以使用refresh()方法随时重新加载对象及其所有集合。当使用数据库触发器初始化对象的某些属性时,这非常有用 sess.save(cat); sess.flus

我希望我知道这个列表中的每一项具体是什么,它是如何工作的,结果是什么,什么时候是正确的使用时间

  • 刷新
  • 驱逐
  • 复制
  • 冲洗
  • 我甚至想知道每个人都做了什么,但我不是绝对肯定,所以我请求你的帮助,因为我真的想了解它

    我知道这是一个相当普通的问题,但我认为了解这一切真的很有用

    谢谢。

    这个就是很好的例子。这也会给你一些见解。我将从下面添加一些行

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

    sess.save(cat);
    sess.flush(); //force the SQL INSERT
    sess.refresh(cat); //re-read the state (after the trigger executes)
    
    有关更多示例,请参见

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

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

    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。

    replicate()
    用于在需要使用给定标识符保存实体时,而不是使用
    save()
    /
    persist()
    ,尽管已将所述实体的标识符配置为生成

    当某些实体(可能来自外部系统)具有预先存在的标识符,而相同类型的其他实体需要生成它们的标识符时,这是非常有用的

    但是,由于Hibernate(,)中存在一个长期存在的bug,
    replicate()
    无法在某些类型的id生成器中正常工作。此问题限制了
    replicate()
    的可用性,并要求您在id生成器策略受到影响且无法更改时实施令人不快的变通方法来模拟其行为。

    • session.flush()
      刷新会话将强制Hibernate将会话的内存状态与数据库同步
    • session.execute()
      将对象从会话缓存中分离。将对象从会话中分离后,对对象的任何更改都不会持久化
    • session.refresh()
      重新加载所有数据
    • session.replicate()
      以不同的模式复制数据

    我试图调用SeaSeCestOut.EvICAT(CAT),但它给了我编译时错误-不适用的论点。@ KValeTrVIEDI考虑与所有相关信息发布一个新问题,如示例代码和日志。