[b]Get 是个勤奋的好孩子, Load 是个懒惰的孩子[/b]
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就是持久化对象的,它存了那么多咱们为啥不用呢?
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就是持久化对象的,它存了那么多咱们为啥不用呢?