我希望我知道此列表中每个项目的确切功能,工作原理,后果以及何时使用正确的时间。
我什至不知道每个人的工作,但是我不确定,所以我要求您的帮助,因为我真的很想了解它。
我知道这是一个非常笼统的问题,但是我认为了解这一切真的很有用。
谢谢。
在 Hibernate文档提供了很好的例证。另外,此博客文章还将为您提供一些见识。我将从下面添加一些行。
使用该方法可以随时重新加载对象及其所有集合refresh()。当使用数据库触发器来初始化对象的某些属性时,这很有用。
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的内部缓存中。
save(), update() or saveOrUpdate()
load(), get(), list(), iterate() or scroll()
当flush()随后调用时,对象的状态将与数据库进行同步。如果您不希望发生这种同步,或者正在处理大量对象并且需要有效地管理内存,则evict()可以使用该方法从一级缓存中删除对象及其集合。
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的信息。