今天程序中涉及到这个问题,我查了下。有些人说的很笼统理解不了,下面是一个朋友的解释,我copy如下,并说出自己的理解:
1.如果没有符合条件的纪录,get返回一个null,load会抛出一个ObjectNotFountdException
2.load返回实体的代理类实例(先查看缓存和二级缓存是不是别人用过,如果别人用过了就会留下句柄,那么它就返回这个句柄,如果没有的话就抛出一个null了。),get方法永远直接返回实体类(先找一把,毕竟hibernate是持久化对像的。如果没有的话它就通过ID去数据库中检索并构造一个对象并返回,如果库中查不到的话就抛出异常:ObjectNotFountdException并告诉你 No row with the given identifier exists: load的类)。
3.load方法充分利用内部缓存和二级缓存,get方法只使用内部缓存,没有就直接查询!!!
所以,如果要利用二级缓存的时候,要用load读取数据。
----------------------只要能很好的处理他们返回的异常信息就大胆的用load吧。毕竟hibernate就是持久化对象的,它存了那么多咱们为啥不用呢?呵呵。
posted on 2009-10-27 10:34
赵永亮 阅读(155)
评论(0) 编辑 收藏