get()与load()的区别

来源:互联网 发布:航天金税开票软件 编辑:程序博客网 时间:2024/06/07 16:36

load()加载的方法:

Cap cap =(Cap)session.load(Cap.class,capId);

如果capId为null,则该方法会返回一个代理对象,但是如果后面调用cap.getCapName()则会抛出异常!

load可以延迟加载。使用load加载完后会在hibernate的一级缓存中存放一个map对象,该map的key就是capId的值,

当getId()时便会去一级缓存中去map的key的值,而不会去执行数据库查询,所以不会报错。

get()加载方法:

Cap cap =(Cap)session.get(Cap.class,capId);

如果capId为null,则该方法会null.   get()不支持延迟加载。

这边所谓load可以延迟加载的意思就是指:

Cap cap =(Cap)session.load(Cap.class,capId);这在执行时不会立即去查询数据库,只有用到cap时才会去执行数据库查询。

get()不支持延迟加载:

Cap cap =(Cap)session.get(Cap.class,capId);在执行时会立即去查询数据库