环境: 双核 2G内存
DB: mysql hibernate+spring
hibernate执行sql语句的两种方式:
第一种方式:hibernate createSQLQuery里面可以传入传统的sql语句进行查询,它的返回值为一个数组,
第二种方式:hibernate session.connection得到的是一个java.sql.Connection对象,以下的操作就和jdbc一样的操作 。
我用以上两种方式查询1条记录:
String sql = "select m.id,m.m_recordState,m.m_number,m.m_name,m.m_typeid,m.m_spec,m.m_model," +"m.m_color,m.m_weight,m.m_weightunit,m.m_volume,m.m_volumeunit,m.m_height,m.m_width,m.m_oneortwo," + "m.m_state,m.m_recordMaker,m.m_recordDate from t_Material m join t_PurchaseList l on " +
"m.id=l.p_materiaId join t_PurchaseOrder p on p.id=l.parentid " +
"where p.o_vendor='0011' and m.m_state=1 and m.m_recordState=1";
第一种用时 62毫秒 第二种用时47毫秒(我用同事的机器测试第一种方式竟然用了100多毫秒,两种方式用时相差一半多)
我换了sql语句
String sql = "select m.* from t_Material m join t_PurchaseList l on " +
"m.id=l.p_materiaId join t_PurchaseOrder p on p.id=l.parentid " +
"where p.o_vendor='0011' and m.m_state=1 and m.m_recordState=1";
第一种用时 78毫秒 第二种用时47毫秒
所以用hibernate执行sq1语句的两种方式差别:
1: sqlquery :hibernate对其返回值进行了封装相差 connection: hibernate没有对其进行任何的封装 两种方式用时相差很大,(根据机器配置不同,则相差不同)总之,相差近一半.
2: sql语句: 采用select * 和分别列出每个列 对connection来说没有影响,对sqlquery来说也会有相差
分享到:
相关推荐
hibernate 的createSQLQuery的几种用法总结
与 createQuery 方法不同的是,createSqlQuery 方法可以执行查询、修改和添加操作。 使用 createSqlQuery 方法可以执行以下操作: 1. 查询操作:使用 createSqlQuery 方法可以执行查询操作,例如: String sql = ...
使用hibernate的query调用oracle的存储过程/function,包含例子,源码以及数据库文件
Hibernate 提供了多种方式来执行原生 SQL 语句,其中之一是使用 `Session.createSQLQuery()` 方法,该方法返回一个 `SQLQuery` 对象,该对象提供了执行原生 SQL 语句的方法。 例如,我们可以使用以下代码来执行一个...
第24章 Hibernate与Struts框架 24.1 实现业务数据 24.2 实现业务逻辑 24.3 netstore应用的订单业务 24.4 小结 第25章 Hibernate与EJB组件 25.1 创建EJB组件 25.1.1 编写Remote接口 25.1.2 编写Home...
第24章 Hibernate与Struts框架 24.1 实现业务数据 24.2 实现业务逻辑 24.3 netstore应用的订单业务 24.4 小结 第25章 Hibernate与EJB组件 25.1 创建EJB组件 25.1.1 编写Remote接口 25.1.2 编写Home...
第24章 Hibernate与Struts框架 24.1 实现业务数据 24.2 实现业务逻辑 24.3 netstore应用的订单业务 24.4 小结 第25章 Hibernate与EJB组件 25.1 创建EJB组件 25.1.1 编写Remote接口 25.1.2 编写Home...
第24章 Hibernate与Struts框架 24.1 实现业务数据 24.2 实现业务逻辑 24.3 netstore应用的订单业务 24.4 小结 第25章 Hibernate与EJB组件 25.1 创建EJB组件 25.1.1 编写Remote接口 25.1.2 编写Home...
If Hiberate is used, with the help of query builder (createSQLQuery) in org.hibernate.Session, one can mention the placeholder parameter name in the SQL and set the values based on the parameter name....