发现hibernate中关于load和get方法的一个小问题,和大家一起讨论 本帖最后由 mybeta 于 2012-05-29 09:56:29 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 get 会查DB,所以有SQL。load不会查DB,只是在缓存中查找。所以没SQL。 1.get()采用立即加载方式,而load()采用延迟加载; get()方法执行的时候,会立即向数据库发出查询语句, 而load()方法返回的是一个代理(此代理中只有一个id属性),只有等真正使用该对象属性的时候,才会发出sql语句 2.如果数据库中没有对应的记录,get()方法返回的是null.而load()方法出现异常ObjectNotFoundException 楼上正解load()方法可以充分利用二级缓存和内部缓存的现有数据,而get()方法只在内部缓存中进行查找,如没有发现对应数据将跳过二级缓存,直接调用SQL完成查找 哎,我以为get和load有什么稀奇的呢,还是这样的话题, 输入框与下拉链表的组合 各位高手请看看我的这个程序(关于写一个国际象棋棋盘的程序) 一个初学者关于JAVA的超级菜鸟问题 一个触发器 问题instead of FOR 区别 新手上路:请教一个关于集合框架的问题! 请教struts中html标记库下拉列表框的使用,在线等,急....... 那位大侠给小弟讲讲RMI中的动态类加载,一定加分,谢谢,急,不够在加,最好有个例子 引用Context中的Environment Entries soap是什么?哪有这方面的教程? spring boot启动后控制台输出日志乱码 日志日期格式化 build.xml文件BUILD FAILED
get()方法执行的时候,会立即向数据库发出查询语句,
而load()方法返回的是一个代理(此代理中只有一个id属性),只有等真正使用该对象属性的时候,才会发出sql语句
2.如果数据库中没有对应的记录,get()方法返回的是null.而load()方法出现异常ObjectNotFoundException
load()方法可以充分利用二级缓存和内部缓存的现有数据,而get()方法只在内部缓存中进行查找,如没有发现对应数据将跳过二级缓存,直接调用SQL完成查找