load: 先从缓存中查找, 没有则判断是否延迟加载, 如果不是延迟加载则从数据库中查找记录, 找到返回, 没找到抛异常, 如果是延迟加载则创建代理对象,如果代理对象的initialized为false, target不为null,则, 返回对象, 否则从数据库中查找记录, 找到则将initialized置为true,并将找到的记录复制到代理对象上, 并返回, 如果没找到则抛出异常。
get: 先从缓存中查找, 如果没有则从数据库中查找, 找到则返回, 没找到返回null2. hibernate缓存策略
cache usage="read-only,nonstrict-read-write,read-write,transactional" read-only 只读,适用于很少变更的静态数据/历史数据 nonstrict-read-write 不严格读写缓存,如果基本不会发生有两个事务同时修改一个数据的时候,比read-write的性能要好 read-write 比较普遍的形式,效率一般 transactional JTA中,且支持的缓存产品较少打开了查询缓存之后,需要注意,调用query.list()操作之前,必须显式调用query.setCachable(true)来标识某个查询使用缓存