`
cargoj
  • 浏览: 59221 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

hibernate3 一对一映射延迟加载失效

    博客分类:
  • SSH
 
阅读更多

例子:新闻索引A表   内容B表,B在数据库中是CLOB类型。根据主从关系,B中建立了外键。下面A、B也指实体类。

 

hibernate一对一关系映射文件配置就不多写了,大家都知道,直接切入正题:

 

A的映射配置中有lazy="proxy"设置了延迟加载,但是实际执行并不会延迟加载,hibernate会执行一个JOIN或者另外执行一条获取B的SQL。

从数据库设计来说一对一实体关系模型是根据主从关系在从实体关系中加入另一个关系码,这样只会在B表中建立外键。这样的话实际执行的时候会发现hibernate并没有延迟加载B。

 

解决办法是在A的映射文件中one-to-one加上constrained="true",也就是给A加上一个外键并且不要设置fetch="join"。但是这样就出来另一个问题,以上面为例,添加新闻的时候要同时写两个表,并且要先写内容表,为了解决问题我取消了内容表里的外键。

 

 资料来源:http://community.jboss.org/wiki/SomeExplanationsOnLazyLoadingone-to-one

 

分享到:
评论

相关推荐

    【北大青鸟内部教程】jsp中关于Hibernate延时加载的问题

    在Hibernate中,一对多、多对一和多对多关系通常可以配置为延时加载。 在JSP中使用Hibernate,开发者可能会遇到以下几种常见的延时加载问题: 1. **空指针异常**:如果没有正确地处理延时加载,当尝试访问未加载的...

    hibernate 延迟加载.docx

    3. 多对一关联:`lazy="proxy"`(延迟加载)、`lazy="no-proxy"`(无代理延迟加载)或`lazy="false"`(立即加载),默认为`proxy`。 **`load()`与`get()`的区别** 1. **加载方式**:`load()`采用延迟加载,`get()`...

    hibernate懒加载策略.doc

    - 如果实体间的关联关系配置为懒加载,例如部门(Department)与员工(Employee)的一对多关系,当部门的`lazy`设为`false`时,加载一个部门会同时加载所有关联的员工,可能导致不必要的性能开销。而如果`lazy`设为...

    Hibernate update问题

    在多对一或一对多关系中,如果父对象发生更新,可以通过级联属性设置,使子对象也同时更新。这样可以简化代码,但也可能导致不必要的更新,因此需谨慎使用。 9. **更新异常处理** 在更新过程中可能会遇到各种...

    hibernate性能调节

    在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,性能优化成为开发者必须面对的问题。本文将深入探讨如何对Hibernate进行性能调节,以提高系统...

    二级缓存详解

    在Hibernate3中,二级缓存是一个重要的特性,它可以帮助提高应用程序性能,减少对数据库的直接访问。以下是关于"二级缓存详解"的详细知识: 二级缓存是指在SessionFactory级别上维护的数据缓存,它不同于一级缓存...

    Ehcache Java 缓存框架 v3.9.6.zip

    4. **缓存预热**:可以通过预加载机制在应用启动时填充缓存,减少用户首次访问时的延迟。 5. **缓存穿透和缓存雪崩防护**:通过布隆过滤器防止无效数据的查询,以及设置合理的缓存容量和过期策略来防止大量缓存同时...

    mybatis学习笔记

    - **一对一查询延迟加载**:具体实现方法。 - **一对多延迟加载**:具体实现方法。 - **延迟加载小结**:总结延迟加载的优缺点。 #### 6. 查询缓存 - **MyBatis缓存介绍**:解释缓存机制。 - **一级缓存**:同一...

    04-HQL高级.pdf

    命名查询是Hibernate的一种特性,允许开发者在映射文件中定义查询,并在代码中通过名称引用这些查询。这有助于保持代码的清晰性和可维护性,同时可以避免硬编码查询字符串。 #### 本地SQL查询 在某些情况下,可能...

    java题库java题库java题库

    18. 一对一双向关联查询及其实现方式。 19. MyBatis中延迟加载的原理和支持情况。 20. MyBatis的一级和二级缓存机制。 21. 接口绑定的含义和实现方法。 22. MyBatis插件的运行原理和编写方法。 接下来是ZooKeeper...

    1000道 互联网Java工程师面试题 485页_PDF密码解除.pdf

    - **一对一关联:**使用`<association>`标签进行一对一关联映射。 - **一对多关联:**使用`<collection>`标签进行一对多关联映射。 **20. MyBatis实现一对一有几种方式?具体怎么操作的?** - **嵌套查询方式:**...

    1000道 互联网Java工程师面试题 485页

    - **嵌套查询**:与一对一类似,但处理集合类型。 - **嵌套结果**:同样适用于一对多情况,通过子查询获取集合类型的关联对象。 #### 22、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么? - **支持情况*...

    1000道 互联网大厂面试题.pdf

    18. **关联查询**:MyBatis支持一对一和一对多关联查询,可以通过`<resultMap>`配置。 19. **延迟加载**:MyBatis支持延迟加载,可以按需加载关联对象。 20. **缓存机制**:MyBatis提供了一级缓存和二级缓存,可以...

    百度持续交付项目组面试题

    例如,两个线程同时对一个变量进行自增操作,可能会导致最终的结果比预期的小。 **线程间通信**可以通过`wait()`、`notify()`和`notifyAll()`方法来实现。`wait()`方法会使线程放弃对象锁,进入等待此对象的等待...

    JAVA错误处理大集合.doc

    18. **LazyInitializationException**:延迟加载异常,可能未在查询中启用fetch。对于关联对象,考虑使用`fetch`策略。 19. **IdentifierGenerationException**:高位表未初始化。检查生成主键的机制,确保初始化...

    (2024)跳槽涨薪必备精选面试题.pdf

    - 支持多种事务管理器,如 JTA、JDBC、Hibernate 等。 7. **Spring容器启动流程** - 加载配置文件。 - 创建 BeanFactory。 - 注册后处理器。 - 初始化 Bean。 8. **Spring使用的设计模式** - 单例模式。 - ...

    java面试知识

    - **load**:延迟加载对象,如果找不到记录,则返回null。 ##### Hibernate、Ibatis、Jdbc三者的区别 - **Hibernate**:全ORM解决方案,自动管理对象的生命周期。 - **MyBatis (原Ibatis)**:半ORM框架,提供动态...

Global site tag (gtag.js) - Google Analytics