Hibernate 一级缓存的细节

 一级缓存的细节

①     什么操作会向一级缓存放入数据

save,update,saveOrUpdate,load,get,list,iterate,lock

save 案例:

       //添加一个学生

                     Studentstudent=new Student();

                     student.setName("小东");

                    

                     s.save(student);//放入一级缓存

                    

                     //我马上查询

                     Studentstu2=(Student) s.get(Student.class, student.getId()); //select

                     System.out.println("你刚刚加入的学生名字是"+stu2.getName());

②     什么操作会从一级缓存取数据.

get / load / list

 

get / load 会首先从一级缓存中取,如没有.再有不同的操作[get 会立即向数据库发请求,而load 会返回一个代理对象,直到用户真的去使用数据,才会向数据库发请求]

?list 会不会从session缓存取数据?

案例:

//查询45号学生

             

                     Studentstu=(Student) s.get(Student.class, 45);

                    

                     System.out.println("|||||||||||||||||||");

                    

                     Stringhql="from Student where id=45";

                    

                    

                     Studentstu2=(Student) s.createQuery(hql).uniqueResult();

                    

                     System.out.println(stu2.getName());

从上面的案例,我看出query.list() query.uniueResut() 不会从一级缓取数据! 但是query.list 或者query.uniqueRestu() 会向一级缓存放数据的.

③     一级缓存不需要配置,就可以使用,它本身没有保护机制,所以我们程序员要考虑这个问题,我们可以同 evict 或者 clear来清除session缓存中对象. evict 是清除一个对象,clear是清除所有的sesion缓存对象

④     session级缓存中对象的生命周期, 当session关闭后,就自动销毁.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值