`
qinglin876
  • 浏览: 13084 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

hibernate fetch=select join

阅读更多
练习hibernate的对象间的加载策略时,发现我的
<many-to-one>里明明就已经是one一方的fetch=select,为什么还是用get方法读取many一方的对象就只能取得一条select语句,后来发现原来one一方的配置文件默认使用lazy=true策略,将其改为false即可。如果用fetch=join则没有这个限制,都是一条sql语句搞定
分享到:
评论
1 楼 youjianbo_han_87 2009-06-17  
不错,顶死你。。。。。。。。。。。

相关推荐

    HIBERNATE检索策略

    当第一次访问关联实体或集合时,HIBERNATE会额外发送一条SELECT语句来抓取数据,这种方式虽然简单,但在处理大量数据时可能会导致过多的数据库交互,从而影响性能。 #### 2. 联合抓取(Fetch="join") 与默认策略...

    Hibernate笔记

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

    j2ee英文面试

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

    Hibernate延迟加载以及利用Spring

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

    hibernate_many2one

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

    Hibernate延迟加载

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

    hibernate延迟加载技术详细解

    - 如果没有显式设置 lazy="false",则默认情况下 Hibernate 使用 Select Fetching,这意味着对于每个主对象,Hibernate 都会发送一个 SQL 查询来加载关联对象。 - 这种方式适用于关联数据量不大,且每次查询都需要...

    hibernate优化前的程序

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

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

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

    hibernate的n+1问题.docx

    N+1次SELECT查询问题源于Hibernate的默认行为。当从数据库中加载一个对象及其关联对象时,如果不做特别处理,Hibernate会为每个主对象单独执行一次查询来获取其关联对象,导致查询次数过多。以Customer和Order为例,...

    Hibernate 1+N问题详解

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

    hibernate-release-5.0.7.Final.zip官方

    - **使用 FetchMode.JOIN**:在 hbm.xml 映射文件中,将 fetch 属性设置为 JOIN,或者使用 @Fetch(FetchMode.JOIN) 注解。 ```xml &lt;set name="orders" fetch="join"&gt; &lt;key column="user_id"/&gt; ...

    hibernate 框架的基础四

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

    Hibernate问题解决

    String hql = "SELECT u, r FROM UserInfo u JOIN FETCH u.role r WHERE u.role.id = r.id"; Query query = session.createQuery(hql); List[]&gt; resultList = query.list(); ``` 在这个查询中,`JOIN FETCH`...

    Hibernate HQL.doc

    需要注意的是,`fetch`连接不应在使用`scroll()`或`iterate()`的查询中使用,且与`right join fetch`或`full join fetch`的组合无意义。 4. 属性级别的延迟获取(Lazy Fetching): 如果某个对象属性被配置为延迟...

    HQL Hibernate查询语言

    因此,SeLeCT 和 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg.FOO 不等价于 org.hibernate.eg.Foo,同样,foo.barSet也不等价于 foo.BARSET。本手册中的 HQL 关键字将使用小写字母。 2. from 子句 HQL 中...

    hibernate多表查询详解

    String hql = "from Table2 as t2 inner join t2.table1 as t1 where t1.someProperty = :value"; Query&lt;Table2&gt; query = session.createQuery(hql, Table2.class); query.setParameter("value", someValue); List...

    hibernate的hql语句

    需要注意的是,`fetch`连接不适用于滚动查询或迭代查询,且`full join fetch`和`right join fetch`通常没有实际意义。 4. **关联的处理**:HQL支持处理一对一、一对多、多对一和多对多的关联。例如,`from Cat as ...

    hibernate面试题2

    - **迫切左外连接检索(Fetch Join)**:兼顾透明性和效率,但可能加载不必要的对象,且复杂的表连接可能影响性能。 2. **查看Hibernate生成的SQL**:在`applicationConfig.xml`中设置`hibernate.show_sql`为`true...

    Hibernate_HQL大全

    5. **FETCH JOIN**:FETCH JOIN是HQL的一种特殊连接类型,用于优化查询性能,特别是在处理集合时。通过使用FETCH JOIN,可以一次性加载关联对象或集合,避免了多次查询数据库的问题,提高了数据加载效率。 6. **...

Global site tag (gtag.js) - Google Analytics