`
letitbe
  • 浏览: 237860 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate问题

阅读更多
1,get一个对象并打算修改这个对象时,hibernate会判断该对象的属性值是否有变动,如果没有任何变动,hibernate不会执行update语句。在同时修改页面上的多条记录时可发现这一点。

2,执行以下语句时hibernate3.0.5会报错,而3.2不会
sql="select 1+1 from dual";
session.createSQLQuery(sql).uniqueResult()
报错:addScalar() or addEntity() must be called on a sql query before executing the query.

3,<many-to-one> 的lazy设置为true时,get子对象不会把该父对象抓过来,但可以手动写代码抓取父对象
如 Son son =(Son)this.getHibernateTemplate().get(Son.class, id);
       然后执行 son.getParent().getName();
   这样不仅仅会抓取到name,其他所有的属性如age,sex等都会取到,即用p.getParent().getAge()达到了同样的效果,后台都执行了select * from parent where id=?   注意用p.getParent()仅能得到parent的id.
   这时debug查看parent对象的内存快照,看到的是一个用cglib实现的代理对象,
Hibernate通过使用CGLIB,来实现动态构造一个目标对象的代理类对象,并且在代理类对象中包含目标对象的所有属性和方法,而且所有属性均被赋值为null。通过调试器显示的内存快照,我们可以看出此时真正的User对象,是包含在代理对象的CGLIB$CALBACK_0.target属性中,当调用son.getName()方法,这时通过CGLIB赋予的回调机制,实际上调用CGLIB$CALBACK_0.getName()方法,当调用该方法时,Hibernate会首先检查CGLIB$CALBACK_0.target属性是否为null,如果不为空,则调用目标对象的getName方法,如果为空,则会发起数据库查询,生成类似这样的SQL语句:select * from parent where id=’1’;来查询数据,并构造目标对象,并且将它赋值到CGLIB$CALBACK_0.target属性中。
这样,通过一个中间代理对象,Hibernate实现了实体的延迟加载,只有当用户真正发起获得实体对象属性的动作时,才真正会发起数据库查询操作。
    <many-to-one> 的lazy设置为false时,抓取父对象没有采用代理机制。

4,用session.close(),执行多次查询后报session is closed的错误,而hibernateSessionFactory.closeSession()没有这个问题,这是什么原因?

5,ORA-01466: 无法读数据 - 表定义已更改
原因是系统时间修改造成的,其他原因详见
http://www.orafaq.com/usenet/comp.databases.oracle.server/2007/03/31/1586.htm


  
分享到:
评论

相关推荐

    Hibernate面试题专栏 - 最全的Hibernate面试题, Hibernate笔试题, Hibernate问题

    【标题】与【描述】提及的是“Hibernate面试题专栏”,主要涵盖了全面的Hibernate面试题、笔试题以及相关问题,这表明我们将要讨论的是Java领域中著名的对象关系映射框架——Hibernate的相关知识。Hibernate是一个...

    Hibernate问题集锦

    \Hibernate 问题集锦.docx

    Hibernate相关jar包括新版本jdk不兼容旧版本的jar.zip

    这个问题在"Hibernate相关jar包括新版本jdk不兼容旧版本的jar.zip"这个压缩包中被提及,表明其中可能包含了针对这种兼容性问题的解决方案。 首先,我们需要理解为什么新版本的JDK可能导致与Hibernate的不兼容性。...

    hibernate ppt 有问题 www.willvc.com.cn 能联系到我

    由于具体问题未明确,我们将探讨一些常见的Hibernate问题及其解决方法。 【标签】:“hibernate ppt 有问题 www.willvc.com.cn 能联系到我” 这里的标签再次强调了问题的核心,即与Hibernate相关的PPT内容存在困惑...

    HIBERNATE入门

    在培训中,会通过案例分析,如招聘面试中的Hibernate问题和失败项目的教训,来帮助学员深入理解Hibernate的实际应用。这包括了解Hibernate的架构,掌握实体、会话、查询等核心概念,以及如何配置和使用...

    spring+hibernate包冲突问题

    在开发Java Web应用程序时,Spring和...通过以上步骤和策略,大多数Spring与Hibernate的包冲突问题都可以得到解决。在实际开发过程中,应始终关注框架的新版本和官方文档,以便获取最新的兼容性和最佳实践信息。

    《精通Hibernate》学习-对象关系映射基础.zip

    15. 错误处理和优化:学习如何调试常见的Hibernate问题,如N+1查询问题、懒加载异常等,以及如何进行性能调优,如合理设置缓存策略、避免过多的JOIN操作等。 以上就是《精通Hibernate》学习中涉及的主要知识点。...

    Hibernate Hibernate5 讲义 PDF

    这主要是为了解决内存的不稳定性和容量限制问题,并满足业务数据共享、大规模数据检索和数据管理的需求。 在企业级应用中,对象序列化适合少量对象的持久化,但不符合大规模查询和长时间保存的需求。因此,除了对象...

    hibernate aip hibernate aip

    8. **查询优化**:避免N+1查询问题,使用JOIN fetch提前加载关联数据,使用HQL或JPQL替代原生SQL以利用Hibernate的优化能力。 9. **错误处理和日志记录**:理解Hibernate常见的错误和异常,如 detached entity ...

    springMvc+Hibernate实现的一个问题管理系统

    《基于SpringMvc+Hibernate的问题管理系统实现详解》 在IT领域,高效的问题管理是任何软件开发团队不可或缺的一部分。本文将深入探讨如何使用SpringMvc和Hibernate这两个强大的框架,构建一个功能完善的问题管理...

    hibernate3.zip 包含hibernate3.jar

    二级缓存则是在多个`Session`间共享的,可以提高数据读取效率,但需谨慎使用以防止数据一致性问题。 8. **持久化类和映射文件**:持久化类是与数据库表对应的Java类,通常包含一些特定的注解或XML映射文件...

    Hibernate需要注意的问题

    《Hibernate需要注意的问题与数据源配置详解》 在Java企业级开发中,Hibernate作为一种流行的ORM(对象关系映射)框架,极大地简化了数据库操作。然而,使用Hibernate的过程中,开发者需要特别注意一些关键点,以...

    hibernate-release-4.1.4

    3. **文档**:如用户指南、API文档,帮助开发者快速上手和解决问题。 4. **示例**:包含了一些演示如何使用Hibernate的代码示例,有助于理解其用法。 5. **配置文件**:可能有默认的配置模板,展示如何配置Hibernate...

    hibernate-3.2源代码

    《深入剖析Hibernate 3.2源代码...通过深入学习Hibernate 3.2的源代码,开发者不仅可以了解其实现原理,还能在遇到问题时更快定位,进行定制化开发。同时,这也有助于理解ORM框架的工作方式,提升软件设计和开发能力。

    hibernate-extensions和Middlegen-Hibernate

    为了解决这一问题,两个工具——hibernate-extensions和Middlegen-Hibernate应运而生,它们可以自动生成这些代码,提高了开发效率。 **hibernate-extensions** 是Hibernate框架的一个扩展,它提供了一些额外的功能...

    Could not roll back Hibernate transaction.doc

    然而,在使用Hibernate时,可能会遇到事务回滚失败的问题,本文将详细介绍该问题的原因和解决方法。 一、问题描述 在使用Hibernate时,可能会遇到以下错误信息: Could not roll back Hibernate transaction; ...

    Hibernate update问题

    【Hibernate更新问题详解】 Hibernate,一个强大的Java对象关系映射(ORM)框架,极大地简化了数据库操作。在处理数据更新时,Hibernate提供了多种方法,但同时也可能会遇到一些常见问题。本篇文章将深入探讨...

    Hibernate做的留言板

    同时,作者也邀请用户在遇到问题时到其个人空间留言咨询,显示出开发者愿意分享和解答疑惑的态度,有助于初学者解决在使用过程中可能遇到的问题。 【标签】"3 Hibernate 源代码" 提示我们,这个项目使用了Hibernate...

Global site tag (gtag.js) - Google Analytics