19. 提升性能

beat365下载地址 ⌚ 2025-10-23 02:02:34 👤 admin 👁️ 8734 ❤️ 447
19. 提升性能

19. 提升性能

抓取策略(fetching strategy) 是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,

Hibernate如何获取关联对象的策略。抓取策略可以在O/R映射的元数据中声明,也可以在特定的HQL

或条件查询(Criteria Query)中重载声明。

Hibernate3 定义了如下几种抓取策略:

连接抓取(Join fetching) - Hibernate通过

在SELECT语句使用OUTER JOIN(外连接)来

获得对象的关联实例或者关联集合。

查询抓取(Select fetching) - 另外发送一条 SELECT

语句抓取当前对象的关联实体或集合。除非你显式的指定lazy="false"禁止

延迟抓取(lazy fetching),否则只有当你真正访问关联关系的时候,才会执行第二条select语句。

子查询抓取(Subselect fetching) - 另外发送一条SELECT

语句抓取在前面查询到(或者抓取到)的所有实体对象的关联集合。除非你显式的指定lazy="false"

禁止延迟抓取(lazy fetching),否则只有当你真正访问关联关系的时候,才会执行第二条select语句。

批量抓取(Batch fetching) - 对查询抓取的优化方案,

通过指定一个主键或外键列表,Hibernate使用单条SELECT语句获取一批对象实例或集合。

Hibernate会区分下列各种情况:

Immediate fetching,立即抓取 - 当宿主被加载时,关联、集合或属性被立即抓取。

Lazy collection fetching,延迟集合抓取- 直到应用程序对集合进行了一次操作时,集合才被抓取。(对集合而言这是默认行为。)

"Extra-lazy" collection fetching,"Extra-lazy"集合抓取 -对集合类中的每个元素而言,都是直到需要时才去访问数据库。除非绝对必要,Hibernate不会试图去把整个集合都抓取到内存里来(适用于非常大的集合)。

Proxy fetching,代理抓取 - 对返回单值的关联而言,当其某个方法被调用,而非对其关键字进行get操作时才抓取。

"No-proxy" fetching,非代理抓取 - 对返回单值的关联而言,当实例变量被访问的时候进行抓取。与上面的代理抓取相比,这种方法没有那么“延迟”得厉害(就算只访问标识符,也会导致关联抓取)但是更加透明,因为对应用程序来说,不再看到proxy。这种方法需要在编译期间进行字节码增强操作,因此很少需要用到。

Lazy attribute fetching,属性延迟加载 - 对属性或返回单值的关联而言,当其实例变量被访问的时候进行抓取。需要编译期字节码强化,因此这一方法很少是必要的。

这里有两个正交的概念:关联何时被抓取,以及被如何抓取(会采用什么样的SQL语句)。不要混淆它们!我们使用抓取来改善性能。我们使用延迟来定义一些契约,对某特定类的某个脱管的实例,知道有哪些数据是可以使用的。

19.1. 抓取策略(Fetching strategies)

19.1.1. 操作延迟加载的关联19.1.2. 调整抓取策略(Tuning fetch strategies)19.1.3. 单端关联代理(Single-ended association proxies)19.1.4. 实例化集合和代理(Initializing collections and proxies)19.1.5. 使用批量抓取(Using batch fetching)19.1.6. 使用子查询抓取(Using subselect fetching)19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache)

19.2.1. 缓存映射(Cache mappings)19.2.2. 策略:只读缓存(Strategy: read only)19.2.3. 策略:读/写缓存(Strategy: read/write)19.2.4. 策略:非严格读/写缓存(Strategy: nonstrict read/write)19.2.5. 策略:事务缓存(transactional) 19.3. 管理缓存(Managing the caches)

19.4. 查询缓存(The Query Cache)

19.5. 理解集合性能(Understanding Collection performance)

19.5.1. 分类(Taxonomy)19.5.2. Lists, maps 和sets用于更新效率最高19.5.3. Bag和list是反向集合类中效率最高的19.5.4. 一次性删除(One shot delete) 19.6. 监测性能(Monitoring performance)

19.6.1. 监测SessionFactory19.6.2. 数据记录(Metrics)

相关数据

新颖的意思、解释和含义

新颖的意思、解释和含义

新生的带芒的谷穗。 宋 苏轼 《送参寥师》诗:“剑头惟一吷,焦穀无新颖。” 指新生的其状细长的花蕾。 宋 苏轼 《新居》诗:“数朝风雨凉

10-09 beat365下载地址
如何彻底关闭微信微粒贷入口?操作流程详解

如何彻底关闭微信微粒贷入口?操作流程详解

在数字金融时代,随着在线借贷的普及,越来越多的人寻求快速、便捷的贷款服务。微信中的微粒贷,作为一项便捷的小额信贷服务,吸引了大

09-21 体育投注英超和欧冠
琥珀到底是怎么来的?

琥珀到底是怎么来的?

▌琥珀的产地与特性 世界上琥珀的储藏有数百处之多。但凡有各种绝迹植物硬化树胶存在的地方,就会有湖泊。但是,储藏丰富且值得开采的,

07-14 365体育欧洲版本
红色加绿色变成什么颜色 红色加绿色混成什么颜色

红色加绿色变成什么颜色 红色加绿色混成什么颜色

绿和红搭配起来会变成什么颜色。 1、红+绿=黄 蓝+绿=青 红+蓝=品红 绿+蓝+红=白 光三原色——加色法原理 人的眼睛是根据所看见的光的波长来识

10-06 体育投注英超和欧冠
tf专柜多少钱(全球各机场免税店大盘点)

tf专柜多少钱(全球各机场免税店大盘点)

越来越多的人选择出国旅行来放松身心,购物成了不可或缺的重要内容。免去长途搬运,又能享受免税、退税的机场免税店成了"血拼"的最佳场

07-12 beat365下载地址
地下城堡2破解版下载 IOS无限钻石版安装教程

地下城堡2破解版下载 IOS无限钻石版安装教程

地下城堡2目前只有IOS版本,因此并没有破解版,而安卓版目前还未有放出的消息,因此大家还需要等待一段时间;至于IOS版存档目前小编还暂未

07-19 beat365下载地址