void | flush() | 将 Session 缓存中的对象强制 flush 到底层数据库 |
void | evict(Object obj) | 将对象 obj 从 Session 缓存中剔除 |
boolean | contains(Object obj) | 返回 Session 缓存中是否含有某个对象 |
void | clear() | 清除 Session 缓存中的所有对象 |
BigObject bigObjList = session.createQuery("from Atricle");
while(bigObjList.next()){
BigObject obj = (BigObject)bigObjList.get(0);
//use obj to do something
.....
session.evit(obj); //将obj从Session一级缓存中剔除
}
true
org.hibernate.cache.ehcache.EhCacheRegionFactory
evictEntity(Class classType, Serializable id) | 在二级缓存中 消除指定的实体的指定id实例 evictEntity("User.class",id) |
evictEntityRegion(Class classType) | 在二级缓存中 消除指定实体的所有实例 |
evictCollection(String role, Serializable ownerIdentifier) | 在二级缓存中 消除指定id的 实体关联实体实例,如: evictEntity("User.class") |
evictCollection(String role) | 在二级缓存中 消除所有的指定的 实体关联实体实例,如: evictCollection("User.Article") |
true
Session session = HibernateUtil.currentSession();
Transaction tran = session.beginTransaction();
List list = session.createQuery("select u.name,u.age from User u")
.setCacheable(true) //对本次查询开启查询缓存
.list();
Iterator iterator = session.createQuery("select u.name,u.age from User u")
.setCacheable(true) //对本次查询开启查询缓存
.iterate();
public class test {
public static void main(String[] args){
Session session = HibernateUtil.currentSession();
Transaction tran = session.beginTransaction();
for(int i=0;i<1000000;i++){
Users user = new Users();
.....
session.save(user);
}
HibernateUtil.closeSession();
}
}
public class Test {
public static void main(String[] args){
Session session = HibernateUtil.currentSession();
Transaction tran = session.beginTransaction();
for(int i=0;i<1000000;i++){
User user = new User();
user.setName("assad");
user.setAge(new Random().nextInt(80));
session.save(user); //Session 保存实体
if(i % 30 == 0){ //每隔保存30个实体,Session缓存强制写入,同时清空
session.flush();
session.clear();
}
}
HibernateUtil.closeSession();
}
}
public class Test {
public static void main(String[] args){
Session session = HibernateUtil.currentSession();
Transaction tran = session.beginTransaction();
//使用ScrollableResults储存结果集
ScrollableResults users = session.createQuery("from User")
.setCacheMode(CacheMode.IGNORE)
.scroll(ScrollMode.FORWARD_ONLY);
int count = 0;
while( users.next()){
Users user = (Users)users.get(0);
user.setName("new name"+ count++);
if( count % 30 == 0){
session.flush();
session.clear();
}
}
HibernateUtil.closeSession();
}
}