hibernate中的缓存形式
hibernate中的缓存模式
下面是总结的Hibernate中的缓存模式
1、FlushMode.NEVER模式
上面代码中没有调用session.flush()方法,所以不管怎么使用save()方法都无法将缓存中的数据同步到数据库中
2、FlushMode.COMMIT
上面代码在事务提交的时候,会将缓存中的数据同步到数据库中
3、FlushMode.AUTO
下面是总结的Hibernate中的缓存模式
1、FlushMode.NEVER模式
/** * hibernate中的缓冲模式:FlushMode.NEVER * 除非程序调用flush方法,否则永不清理缓存,即:不会将数据同步到数据库中 */ public void flushModeNEVER() { Session session = HibernateSessionFactory.getSession(); session.setFlushMode(FlushMode.NEVER); //设置hibernate中的缓冲模式:FlushMode.NEVER Transaction tran = session.beginTransaction(); Student s = (Student) session.get(Student.class, "s001"); s.setSage(new Long(33)); //将年龄修改为33 session.save(s); //将修改过的学生对象保存到数据库中 tran.commit(); HibernateSessionFactory.closeSession(); }
上面代码中没有调用session.flush()方法,所以不管怎么使用save()方法都无法将缓存中的数据同步到数据库中
2、FlushMode.COMMIT
/** * hibernate中的缓存模式:FlushMode.COMMIT * 在事务结束之前清理session的缓存,其他任何时候都不清理缓存 */ public void flushModeCOMMIT() { Session session = HibernateSessionFactory.getSession(); session.setFlushMode(FlushMode.COMMIT); //设置hibernate中的缓冲模式:FlushMode.COMMIT Transaction tran = session.beginTransaction(); Student s = (Student) session.get(Student.class, "s001"); s.setSage(new Long(33)); //将年龄修改为33 session.save(s); //将修改过的学生对象保存到数据库中 tran.commit(); //事务提交结束会清理session缓存中的数据,并同步数据库 HibernateSessionFactory.closeSession(); }
上面代码在事务提交的时候,会将缓存中的数据同步到数据库中
3、FlushMode.AUTO
/** * hibernate中的缓存模式:FlushMode.AUTO * 它是Hibernate中的默认的缓存模式。如果一个对象在缓存中被更改了,则在一个查询语句之前Hibernate会将缓存中的数据先同步到数据库,然后才进行数据的查询 */ public void flushModeAUTO() { Session session = HibernateSessionFactory.getSession(); Transaction tran = session.beginTransaction(); Student s = (Student) session.get(Student.class, "s001"); s.setSage(new Long(23)); //将年龄修改为23 session.save(s); s = (Student) session.createQuery("from Student where sno = 's001'").uniqueResult(); System.out.println("编号为" + s.getSno() + "的学生年龄为:" + s.getSage()); tran.commit(); HibernateSessionFactory.closeSession(); }
1 楼
spring-china
2011-03-29
这个是FlushMode,不是CacheMode啊?
CacheMode分为
GET, NORMAL, IGNORE, GET, REFRESH这几种哦...
CacheMode分为
GET, NORMAL, IGNORE, GET, REFRESH这几种哦...