Hibernate检索(get步骤和load方法的区别)

Hibernate检索(get方法和load方法的区别)

Hibernate中的get和load的区别

参考书上介绍如下:

load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,则越过二级缓存,直接调用SQL完成数据读取

抱着怀疑的态度进行了测试,代码如下:

1.配置文件

 Hibernate检索(get步骤和load方法的区别)

 

2.映射文件

Hibernate检索(get步骤和load方法的区别)

3.测试代码

Hibernate检索(get步骤和load方法的区别)

测试结果如下:

Hibernate: select person0_.id as id0_0_, person0_.name as name0_0_, person0_.age as age0_0_, person0_.address as address0_0_ from person person0_ where person0_.id=?
张飞(翼德)
张飞(翼德)
1

 

很明显:使用get方法,在第一个Session关闭后,并没有再次执行SQL语句,数据是从二级缓存中获得的,最后的一次命中也再次说明了这个问题,看来书本上的内容也不能尽信啊,实践出真知

PS:不过有可能书本上是按照Hibernate2.0版本讲解的,在3.0以后的版本中,get方法也能访问二级缓存数据了?