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

Hibernate many-to-one fetch

 
阅读更多

      上次用来 Eclipselink 的 JPA  优化  Query 需要用到 EclipseLink 自己的 eclipselink.left-join-fetch  特有的hint name 来 实现。   今天在用到 Hibernate 的 一个 many-to-one 的 的时候看到它默认的实现是采用 select fetch 的方式   也就是 在取 many  边的表 后  还会用  select 方式去取  one 那边的表。 从日志中看到很多sql 语句,  联想到应该也有相应的join fetch。  通过 查看 dtd , 果然在 many-to-one 里面有个 fetch  属性,它有两个值: select 和 join。  这个 select 应该是默认的实现。当改成join 后看到 仅有的一个 sql 感觉 or mapping 也还是不错的说。 

 

<many-to-one name="columnId" class="DataArchitectrueColumn"

column="COLUMN_ID"  lazy="false" fetch="join"/>

 

 如果 fetch="join" 的话,  这个lazy 配置成  true 也没有啥作用了,  都一把 join 出来了。  

分享到:
评论
1 楼 bruce008 2011-11-01  
其实在 Hibernate中, 我们也可以在 HQuery中通过指定 join fetch



Session sess = this.getSessionFactory().getCurrentSession();
StringBuilder query = new StringBuilder("select dag from ");
query.append(" DataArchitectureStructureColumn dag join fetch dag.dataStructureId daf join fetch dag.columnId where ");
query.append(" daf.name in ( :tableNames )");

Query q = sess.createQuery(query.toString());
q.setParameterList("tableNames", tableNames);

1,  虽然我们只取出dag,  但是我们指定它里面的  dag.dataStructureId 和 dag.columnId 都是 join fetch。 


2,  Hibernate 的 parameter 是 list 的时候 我们必须使用 setParameterList 方法, 而在JPA 里面是不需要这样的。  

相关推荐

    (4)Hibernate中的many-to-one和one-to-many关系

    本话题主要探讨两种基本的关系映射类型:many-to-one(多对一)和one-to-many(一对多)。这两种关系映射是数据库中常见的关联类型,理解和掌握它们对于开发高质量的Java应用至关重要。 1. many-to-one关系 many-to...

    Hibernate one-to-many-annotation

    在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...

    day36 07-Hibernate抓取策略:many-to-one上的抓取策略

    今天我们要讨论的是Hibernate框架中的一个关键概念——抓取策略,特别是针对"many-to-one"关系的抓取策略。这篇博客将深入剖析这个主题,帮助你更好地理解和应用Hibernate。 Hibernate是Java领域中最流行的对象关系...

    Hibernate one to many(many to one) 配置

    标题"Hibernate one to many(many to one) 配置"涉及到的是关系型数据库在Java中的持久化框架Hibernate中的两种关联映射关系:一对一(One-to-One)和多对一(Many-to-One)。在数据库设计中,这种关系很常见,例如...

    hibernate many to one

    在Java的持久化框架Hibernate中,"Many-to-One"关系是一种常见的关联映射类型,它表示一个实体(类)可以与多个其他实体实例相关联。在这个主题中,我们将深入探讨Hibernate如何处理这种关系,以及如何在实际编程中...

    Hibernate之第3解之-hibernate_hibernate_many2one_1

    《深入理解Hibernate:第三解——Many-to-One关系映射实战》 在Java世界里,ORM(Object-Relational Mapping)框架的出现极大地简化了数据库与Java对象之间的交互,而Hibernate作为其中的佼佼者,更是备受开发者青睐...

    hibernate_many2one

    除了基本的`&lt;many-to-one&gt;`映射外,Hibernate还支持多种映射策略,如`@ManyToOne`、`@JoinColumn`等注解,这些注解可以在实体类中直接使用,使得代码更加简洁明了。例如: ```java @ManyToOne(fetch = FetchType....

    hibernate-one-to-many-uni

    【标题】"hibernate-one-to-many-uni" 指的是在Hibernate框架下实现的一对多单向关联关系。Hibernate是Java开发中常用的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是数据库交互。在这个...

    hiberante - one to many - update

    标题中的“hibernate - one to many - update”指的是Hibernate框架中关于一对一(One-to-Many)关系映射和更新操作的知识点。在Java开发中,Hibernate是一个流行的对象关系映射(ORM)工具,它允许开发者用面向对象...

    hibernate-distribution-3.6.10.Final-dist

    8. **一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)关系**:Hibernate通过`@OneToMany`,`@ManyToOne`,`@ManyToMany`注解来处理这些关联关系,自动建立关联表或中间表。 9. **事务管理**...

    hibernate-release-5.0.7.Final.zip官方

    &lt;one-to-many class="Order"/&gt; ``` ```java @Entity public class User { @Id private Long id; private String name; @Fetch(FetchMode.JOIN) @OneToMany(mappedBy = "user") private List&lt;Order&gt;...

    hb-04-one-to-many-uni

    标题“hb-04-one-to-many-uni”和描述中的信息看似简洁,但结合标签“Java”,我们可以推测这是一个关于Java编程中的一个特定主题——一对一(One-to-One)、一对多(One-to-Many)关系的统一处理(uni)的示例项目...

    hibernate 关联映射(一) many to one

    &lt;many-to-one name="department" class="com.example.Department" fetch="join"&gt; &lt;column name="department_id" not-null="true"/&gt; &lt;/many-to-one&gt; &lt;!-- ... --&gt; &lt;/hibernate-mapping&gt; ``` 这里,`name`属性...

    hibernate 映射-一对多双向

    3. **一对多关联(One-to-Many Association)**:使用`@OneToMany`注解在父类(拥有多个子项的一方)中声明,表示一个实体可以与多个其他实体相关联。可以通过`mappedBy`属性指定关联的另一端。 4. **多对一关联...

    hibernate_6映射关系之one2many.zip_hibernate

    在Java的持久化框架Hibernate中,`One-to-Many`映射关系是对象关系映射(ORM)中常见的一种关联类型。它表示一个实体("One"端)与多个其他实体("Many"端)之间的关系。例如,一个学生可以有多个课程,一个老师可以...

    hibernate-one-to-many

    &lt;many-to-one name="department" class="com.example.Department" column="DEPARTMENT_ID" /&gt; ``` 如果使用注解,上述关系已经在实体类中定义。 ### 3. 操作一对多关系 在实际应用中,我们可以通过Hibernate提供...

    Hibernate-基础联表模板

    6. **多对一(One-to-Many)和一对多(Many-to-One)关联** 这是两种常见的关联关系。在Hibernate中,通过`@ManyToOne`和`@OneToMany`注解可以定义这种关系。在联表查询时,可以通过这些注解实现数据的级联加载或...

    Hibernate关联关系hbm.xml中的相关属性

    在hbm.xml文件中,我们可以使用`&lt;many-to-one&gt;`, `&lt;one-to-many&gt;`, 和 `&lt;many-to-many&gt;`标签来定义这些关联。下面将详细介绍这三个标签及其相关属性。 首先,我们来看`&lt;many-to-one&gt;`标签,它表示多对一的关系。...

    Hibernate 的关联映射

    "Hibernate的关联映射"是Hibernate中的核心概念之一,用于模拟数据库中的关系,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)四种关系。现在,让我们详细探讨...

Global site tag (gtag.js) - Google Analytics