`

hibernate查看真实执行的sql的方法

 
阅读更多

      和同事一块定位一个问题的时候,打印出来的sql是对的,但是执行的不对,由于使用的是namedParameter,所有不是真实执行的sql,最终调试发现,在AbstractBatcher类里面
在真正的执行sql语句:

public ResultSet getResultSet(PreparedStatement ps) throws SQLException {
		ResultSet rs = ps.executeQuery();
		resultSetsToClose.add(rs);
		logOpenResults();
		return rs;
	}



如下图所示,com.mchange.v2.c3p0.impl.NewProxyResultSet对象持有的creator的toString方法打印出了sql,当然了dialect不同,可能不是所有的数据库dialect都能拿到sql,但是大同小异。
      :

  • 大小: 104.6 KB
分享到:
评论

相关推荐

    hibernate延迟加载解决

    如果代理对象的`target`属性为空,那么Hibernate会发出SQL查询以加载实际的数据并创建真实的User对象,然后将其赋值给代理对象的`target`属性。之后所有的访问都会直接作用于真实对象。 ##### 2. 集合类型的延迟...

    Harnessing Hibernate

    Hibernate提供了多种方式来创建和执行查询,包括使用Criteria API和Example API来简化查询创建过程。此外,本书还将介绍Hibernate Query Language(HQL),这是一种类似于SQL的查询语言,但更加面向对象。通过对比...

    Hibernate 框架总结

    - Query接口允许开发者使用HQL(Hibernate Query Language)或者原生SQL语句来执行数据库查询操作。Criteria接口提供了更加面向对象的查询方式,它可以用来构建类型安全的查询。 Hibernate的工作原理大致如下: 1....

    hibernate3.0+spring3.3整合包

    - 业务层和DAO层:在业务层方法中,使用Spring的`@Transactional`注解开启事务,然后在DAO层通过SessionFactory获取Session,执行SQL操作。 5. **优点**: - 降低耦合度:Spring的DI和AOP可以降低对Hibernate的...

    hibernate性能测试代码

    在博客链接(由于此处无法直接访问,只能根据描述推断)中,作者hanlin0605可能分享了一种或多种方法来测试Hibernate的性能。这可能涉及到创建一个基准测试环境,模拟大量数据操作,例如对象的保存、更新、查询和...

    hibernate实战第二版.pdf

    3. **查询操作**:除了基本的CRUD(创建、读取、更新、删除)操作外,书中还详细介绍了Hibernate的HQL(Hibernate Query Language)和Criteria API,提供了一种更面向对象的方式来执行数据库查询,提高了代码的...

    java视频教程_hibernate3.3.2_项目源码

    Hibernate是Java领域的一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于Java代码而不是SQL。 【描述】提到"java视频教程_hibernate项目源码 大家可下载调试运行",这意味着这个...

    JUnit(针对spring和hibernate)

    JUnit是Java编程语言中最常用的单元测试框架,它允许开发者编写可重复执行的测试代码,以确保应用程序的各个模块正常工作。在与Spring和Hibernate这两个流行框架集成时,JUnit发挥着至关重要的作用,确保了业务逻辑...

    hibernate懒加载策略.doc

    如果目标对象(即真实的User对象)尚未加载,Hibernate会执行SQL查询,从数据库中获取所需数据,然后创建目标对象并将其赋值给代理对象的内部引用。 2. **实体对象的延迟加载** - 如果实体间的关联关系配置为懒...

    Hibernate lazy延迟加载

    2. 当执行查询并返回实体时,如果关联对象标记为懒加载,Hibernate并不会立即执行SQL去获取关联数据,而是创建一个代理对象。这个代理对象会在真正访问关联属性时,通过执行额外的数据库查询来获取数据。 3. ...

    Hibernate的查询 测试的架子

    例如,当执行一个HQL查询时,Hibernate会先将HQL语句转化为AST(抽象语法树),再生成对应的SQL语句,最后通过JDBC接口执行SQL并处理结果。在这个过程中,我们可以学习到如何优化查询性能,如避免N+1查询问题,以及...

    Manning_Hibernate.Quickly

    Hibernate作为ORM框架,其核心功能是将Java对象映射到关系型数据库的表中,并将Java类的操作转换为SQL语句执行。这种映射机制不仅提高了代码的可读性和可维护性,还极大地减少了数据库操作的复杂度。通过Hibernate,...

    Hibernate配置文件在单元测试中的应用

    5. **show_sql**:设置为`true`,便于查看执行的SQL语句,帮助调试。 接下来,我们还需要在测试类中加载这个配置文件并初始化SessionFactory。使用`Configuration`类来读取配置,然后创建`SessionFactory`实例。...

    springmvc hibernate 测试工程

    通过Hibernate,开发者可以使用面向对象的方式来操作数据库,无需编写大量的SQL语句。Hibernate提供了实体类、持久化元数据(例如XML或注解)、查询语言(HQL)等功能,极大地提高了开发效率。 在这个"springmvc ...

    SQL注射技术总结文档

    SQL注入的核心在于,攻击者通过构造特定的输入,使应用程序在执行SQL查询时误将这些输入当作合法的SQL代码执行。例如,一个简单的用户登录界面可能有如下的SQL查询: ```sql SELECT * FROM Users WHERE username = ...

    Hibernate延迟加载介绍.doc

    如果目标对象(即真实的User对象)尚未加载,Hibernate会执行SQL查询(如`select * from user where id='1'`),获取数据并构建目标对象,然后将其赋值给代理对象的`CGLIB$CALLBACK_0.target`属性。 二、集合类型的...

    Hibernate加载方式与多态加载分析

    `get`方法默认不使用CGLIB懒加载,所以在加载时会直接返回实体的真实类,这使得它天生支持多态加载。无论使用`load`还是`get`,API加载的实体的运行时类必须包括实体对象本身和对应的映射文件,否则会抛出异常。 ...

    Hibernate In Action

    Hibernate是一个开源的对象关系映射(ORM)框架,它简化了数据库操作,使得开发人员可以使用面向对象的方式来处理数据库事务,而无需直接编写SQL语句。 在本书中,作者详细介绍了Hibernate的核心概念和功能,包括:...

    SQL注入专题防范+攻击全手册

    5. 实战案例分析,了解真实世界中SQL注入攻击的后果及应对方法。 五、总结 SQL注入防范不仅是技术层面的问题,更是安全意识的体现。开发者需要理解其工作原理,熟练掌握防御技巧,并在实际开发中贯彻执行。同时,...

    hibernate延迟加载技术详细解

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

Global site tag (gtag.js) - Google Analytics