JPA和Hibernate抓取策略的差异
2010-05-10 18:07
190 查看
Hibernate和JPA
的抓取策略是有差异的
。这一点在使用JPA注解时会有所体现。有时候我们需要添加一些hibernate独有的注解才能实现比较好的抓取。下面简单提几点。
所谓“抓取策略”,总要涉及两个问:何时抓取以及如果抓取。这两点在Hibernate提供的注解上体现的非常明显。Hibernate提供两套注解分别用来描述“何时抓取”和“如何抓取”。这样看起来非常条理和清晰。但是JPA显然没有这么做。它只提供了fetch=FeatchType.LAZY or FetchType.EAGER.但是我们必须明白这两种选项对应的实际抓取策略是什么。
对于fetch=FeatchType.LAZY:何时抓取:lazy,如何抓取:select
对于fetch=FeatchType.EAGER:何时抓取:eager,如何抓取:join
这就是JPA对抓取策略的描述。因为它对于lazy和eager只各提供一种抓取方法,因此它就不需要再指定“如何抓取”了。但是hibernate还提供一种subselect抓取,它是配合lazy=true的抓取方法。
如果想要使用subselect抓取,你可以用hibernate的FetchMode.SUBSELECT注解覆写JPA的配制,但是lazy=true这一点,你还是需要使用fetch=FetchType.LAZY来配制的,你只是替换了它的select抓取方法。
的抓取策略是有差异的
。这一点在使用JPA注解时会有所体现。有时候我们需要添加一些hibernate独有的注解才能实现比较好的抓取。下面简单提几点。
所谓“抓取策略”,总要涉及两个问:何时抓取以及如果抓取。这两点在Hibernate提供的注解上体现的非常明显。Hibernate提供两套注解分别用来描述“何时抓取”和“如何抓取”。这样看起来非常条理和清晰。但是JPA显然没有这么做。它只提供了fetch=FeatchType.LAZY or FetchType.EAGER.但是我们必须明白这两种选项对应的实际抓取策略是什么。
对于fetch=FeatchType.LAZY:何时抓取:lazy,如何抓取:select
对于fetch=FeatchType.EAGER:何时抓取:eager,如何抓取:join
这就是JPA对抓取策略的描述。因为它对于lazy和eager只各提供一种抓取方法,因此它就不需要再指定“如何抓取”了。但是hibernate还提供一种subselect抓取,它是配合lazy=true的抓取方法。
如果想要使用subselect抓取,你可以用hibernate的FetchMode.SUBSELECT注解覆写JPA的配制,但是lazy=true这一点,你还是需要使用fetch=FetchType.LAZY来配制的,你只是替换了它的select抓取方法。
相关文章推荐
- 【极客营】Hibernate JPA注解开发-抓取策略
- Hibernate的抓取策略
- Hibernate学习---第十二节:Hibernate之数据抓取策略&批量抓取
- hibernate抓取策略
- Hibernate 抓取策略
- JPA实体注解与hibernate主键生成策略
- 029 hibernate抓取策略
- Hibernate-抓取策略
- hibernate抓取策略fetch详解
- Hibernate与TopLink在主键自动生成策略上的差异
- Hibernate 原汁原味的四种抓取策略
- hibernate 延迟加载和抓取策略
- Hibernate学习手记(8) - 抓取策略
- hibernate抓取策略fetch详解
- hibernate抓取策略
- hibernate 抓取策略fetch
- Hibernate中的多表查询及抓取策略
- Hibernate中的抓取策略
- Hibernate学习44 -- 抓取策略4 -- 批量抓取(Batch fetching)
- Hibernate-缓存/懒加载/抓取策略