`
ghyghoo8
  • 浏览: 193117 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

fetch="join" 和 fetch="select"

阅读更多
Fetching 策略用来决定如何读取那些关联子对象。

代码
List list=session.createQuery("from PostThread").list(); 


在配置中使用fetch=“join” ,Hibernate将在同一个select中返回关联子对象或集合,能够利用Oracle 或 Sybase类型outer joins能够提高性能

fetch=“select” ,这表示Hibernate将在第二个SELECT中获取关联方实体或集合,除非你显式地实现lazy fetching (lazy=“false”)。

简单说:join是一条SQL完成, select是分两次SQL完成.
分享到:
评论

相关推荐

    j2ee英文面试

    - fetch=join:使用外连接来获取关联的实例/集合。 - fetch=select:这是默认选项。如果存在'n'个关联对象,则将会执行'n+1'个select语句。如果懒加载(lazy)属性设置为true,则这些语句只有在实际需要关联时才会...

    HIBERNATE检索策略

    默认抓取策略(Fetch="select") 这是HIBERNATE默认的抓取策略,当一个实体被加载时,与之关联的实体或集合并不会立即加载,而是采用延迟加载(Lazy Loading)的方式。当第一次访问关联实体或集合时,HIBERNATE会...

    Hibernate笔记

    - **Fetch="join"**: 指定使用`JOIN FETCH`策略,即在加载主对象的同时,通过`JOIN`语句一次性加载关联对象。这可以减少数据库查询次数,但在对象关联复杂时可能导致性能问题。 - **XML配置示例**: ```xml ...

    sql 游标、存储过程

    select a.*, b.usingType_code, b.sOrderNo from t_desk a left join t_using_desk b on a.id = b.desk_id go --新建台号时向 t_using_desk 插入记录 --台号显示的时候查 v_desk --去掉表 t_dish_...

    Hibernate 1+N问题详解

    "select s from Student s join fetch s.teacher") .list(); ``` **3. 手动控制加载行为:** ```java List<Student> students = (List) session.createCriteria(Student.class) .setFetchMode("teacher", ...

    Hibernate延迟加载

    使用`fetch="select"`会禁用延迟加载,而`fetch="join"`则会导致连接查询,可能影响性能。 #### 四、注意事项 - **Session管理**:延迟加载的效果受限于Session的生命周期,确保在访问延迟加载的对象前,Session...

    Hibernate延迟加载原理与实现方法

    - 对于单端关联(`<many-to-one>`, `<one-to-one>`),可以使用`fetch`属性控制加载方式,如`fetch="join"`会在同一SQL语句中使用内连接获取关联数据,`fetch="select"`则使用延迟加载。 - 集合属性上的抓取策略...

    Hibernate延迟加载以及利用Spring

    1. **修改Fetch策略**:将Fetch策略设置为`fetch="join"`,即在查询主对象的同时通过JOIN查询的方式加载关联对象,这样就不会抛出延迟加载异常。 2. **禁用延迟加载**:将`lazy="false"`,这样就会在查询主对象时...

    hibernate_many2one

    为了避免这种情况,可以考虑使用`fetch="join"`或`fetch="select"`策略,前者会在加载实体时同时加载其所有关联实体,后者则按需加载。 #### 6. 映射策略 除了基本的`<many-to-one>`映射外,Hibernate还支持多种...

    hibernate 框架的基础四

    Query query = session.createQuery("FROM Order o LEFT JOIN FETCH o.customer c WHERE o.id = :orderId"); query.setParameter("orderId", orderId); List<Order> orders = query.list(); ``` #### 二、事务...

    hsql查询语法

    HSQL支持的连接类型包括inner join、left outer join、right outer join和full join。例如: from Formula form full join form.parameter param 4. FETCH连接 HSQL还支持FETCH连接,用于将关联的对象或一组值的...

    SQL_select.rar_sql 语法

    9. **TOP, LIMIT或FETCH FIRST子句**:根据数据库系统,用于限制返回的结果行数。例如,在SQL Server中: ``` SELECT TOP n column1 FROM table_name; ``` 在MySQL中: ``` SELECT column1 FROM table_name ...

    SQL+SERVER精华查询语句.pdf

    实现这一点通常需要使用`JOIN`操作连接教师表、课程表、选课表和学生表。 **示例代码**: ```sql DECLARE @start TABLE (sStudentId VARCHAR(50), sBookName VARCHAR(255)); DECLARE @sStudentId VARCHAR(50); ...

    hibernate的n+1问题.docx

    此外,我们还可以在实体映射文件中通过`lazy="true"`或`fetch="join"`等属性来设定默认的检索策略。但需要注意,过度使用迫切加载可能导致大数据量的内存消耗,因此应结合具体业务场景选择合适的检索策略。 总结,...

    Hibernate_HQL大全

    在这个查询中,我们不仅检索了Cat实体,还通过LEFT JOIN FETCH子句同时加载了它们的mate和kittens。这种方式确保了即使mate或kittens为空,查询也能正确执行,同时避免了多次数据库访问,提高了查询效率。 #### 四...

    SQL sever 实训

    SELECT * FROM Course --有哪些种类的选修课?学分是多少 USE XK GO SELECT Kind,Credit FROM Crouse GO 修改列名字 SELECT '课程种类'=Kind,'学分'=Credit FROM Course GO --查询Course表的前10行 SELECT TOP ...

    hibernate延迟加载技术详细解

    - 实现方式:可以通过 HQL 或 Criteria API 的 `left join fetch` 来实现。 2. **Select Fetching**: - 如果没有显式设置 lazy="false",则默认情况下 Hibernate 使用 Select Fetching,这意味着对于每个主对象...

    sql数据库学习资料

    FETCH NEXT FROM Select_cursor INTO @deptid, @username; -- 循环处理数据 WHILE @@FETCH_STATUS = 0 BEGIN IF EXISTS(SELECT * FROM #Temp2 WHERE deptid = @deptid) UPDATE #Temp2 SET username = username + ...

    hibernate优化前的程序

    应考虑使用`fetch="select"`或`fetch="join"`策略来控制加载行为。 **3. 延时加载的误用**:不合理的延时加载可能导致“懒加载地狱”,即在不期望的时候触发大量数据库请求。评估业务需求,合理设置加载策略,如...

    hql语句经典教程

    例如,`SeLeCT`、`sELEct`和`SELECT`都是等效的。然而,类的全限定名和属性名必须保持正确的大小写,如`org.hibernate.eg.Foo`不同于`org.hibernate.eg.Foo`,且`foo.barSet`与`foo.BARSET`不相同。在本教程中,建议...

Global site tag (gtag.js) - Google Analytics