`

createQuery与createSQLQuery区别

阅读更多
createQuery与createSQLQuery区别      


hiabernate 中createQuery与createSQLQuery区别,使用经验
createQuery与createSQLQuery两者区别是:


前者用的hql语句进行查询,后者可以用sql语句查询

前者以hibernate生成的Bean为对象装入list返回

后者则是以对象数组进行存储

所以使用createSQLQuery有时候也想以hibernate生成的Bean为对象装入list返回,就不是很方便

突然发现createSQLQuery有这样一个方法可以直接转换对象

Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class);

XXXXXXX 代表以hibernate生成的Bean的对象,也就是数据表映射出的Bean。

呵呵以后多注意,还是时不时的要看看hibernate各个对象方法的使用。



还有另外一个相关的小细节应注意:

比如有这样一个po

PO: User.class
properties: userId,userName
DDL: create table tuser (userid varchar(10),username varchar(20));

当执行:
    session.createQuery("from User u").list()时生成的SQL:
  select userid,username from tuser;

当执行:
  
session.createQuery("from User u").iterator()时生成的SQL:
  
select userid from tuser;
  
可以看出list()一次将数据从数据库中读出直接填充到List中
  
iterator()将数据的主键从数据库中读出,当循环这个Iterator时才添加执行:
  
select userid,username from user where userid=?;把数据读出。

在不同的应用范围使用不同的方法,具体在hibernate应用中应当注意。
分享到:
评论

相关推荐

    关于hibernate 的createQuery和createSqlQuery 的区别

    关于hibernate 的createQuery和createSqlQuery 的区别

    hibernate 的createSQLQuery的几种用法

    hibernate 的createSQLQuery的几种用法总结

    hql查询语句

    Query query=session.createQuery("select count(*) from Student") //avg()取得Student平均年龄 Query query=session.createQuery("select avg(s.age) from Student as s") //upper()方法将字符串转为大写...

    EJB3.0开发文档

    EJB3.0开发文档,适合新手,EJB3.0比2.0要开发容易多了,讲的很好

    Hibernate 高级配置

    2. Hibernate中的createQuery方法 1)、uniqueResult()方法,返回一个单个对象 2)、list()方法返回一个集合 3)、参数绑定 4)、setParameter()方法,绑定任意类型的参数 5)、setProperties()方法,把命名参数与一...

    Hibernate3使用经验

    Query query = session.createQuery("from UserManager u where u.userName = :uname and u.password = :upsw"); query.setString("uname", uName); query.setString("upsw", psw); //根据参数位置设置参数,...

    aws-ec2-running:查询AWS以运行EC2实例

    var createQuery = require ( 'aws-ec2-running' ) ; createQuery(opts [,clbk]) 创建一个新的Query实例,以从检索running EC2实例的列表。 var opts = { 'key' : 'XXXXXXXXXXXXXXXXXX' , 'secret' : '...

    aws-ec2-metrics:查询AWS以获取运行EC2实例的指标

    var createQuery = require ( 'aws-ec2-metrics' ) ; createQuery(opts [,clbk]) 创建一个新的Query实例,以从检索running EC2实例的指标。 var opts = { 'key' : 'XXXXXXXXXXXXXXXXXX' , 'secret' : '...

    用户管理系统

    Query query=session.createQuery(hql) ; query.setString(0, u.getUsername()); query.setString(1, u.getUserpass()); query.setInteger(2, u.getUserright()); List<User> list=query.list(); if...

    Symfony查询方法实例小结

    主要介绍了Symfony查询方法,结合实例形式总结分析了createQuery与getQuery查询数据的具体使用技巧,需要的朋友可以参考下

    HQL语法大全,并带有详细的例子

    HQL是完全面向对象的查询语言,因此...(3)以HQL语句作为参数,调用Session的createQuery方法创建查询对象; (4)如果HQL语句包含参数,调用Query的setXxx方法为参数赋值; (5)调用Query对象的list等方法遍历查询结果。

    JSP开发中hibernate框架的常用检索方式总结

    对象导航检索:根据某个对象导航查询与该对象关联的对象数据 HQL检索:通过query接口对象查询 QBC检索:通过criteria接口对象查询 SQL检索:通过SQL语句查询  2、HQL检索方式: 查询全部数据:session....

    新闻发布系统

    Query query = session.createQuery("from News order by id desc"); query.setFirstResult((pb.getCurrentPageNum()-1)*pb.getPageSize()); query.setMaxResults(pb.getPageSize()); list = query....

    springboot-jpa-restful

    createQuery( Long . class); cq . select(qb . count(cq . from( MyEntity . class))); cq . where( /* your stuff */ ); return entityManager . createQuery(cq) . getSingleResult(); 使用规范界面进行dynamic ...

    Hibernate使用中防止SQL注入的几种方案

    Hibernate使用中防止SQL注入的几种方案 Hibernate是一个开放源代码的...Query query=session.createQuery(hql); query.setString(“name”,name);  2.对参数位置进行邦定: Query query=session.createQuery(hql);

    hibernate二级缓存

    Hibernate二级缓存 在一个数据库系统中,如果缓存设置的合适,那么可以极大的提高系统的效率,Hibernate作为一个ORM工具 提供了缓存的机制,包括一级(Session级)缓存和二... createQuery()等方法获得的数据结果集。

    HQL简单查删改应用

    1、HQL是面向对象的,所以HQL与数据库无关 2、HQL最终也会生成SQL,也就是说 HQL使用范围是<SQL的范围 3、HQL是由query对象获得。 HQL查询 1.查询全部 @org.junit.Test public void hql(){ String hql=from ...

    easygraphql-load-tester:该程序包将根据您的模式创建查询,以与您最喜欢的负载测试程序包一起使用

    使用.createQuery()将创建查询,因此您可以将其与您喜欢的负载测试器一起使用。如何使用它? 导入软件包。 阅读架构。 初始化测试器,并将架构作为第一个参数传递。 如果存在多个模式,则将带有模式的数组传递给...

    EJB3.0 实例教程 -- 切片2

    4.3 STATELESS SESSION BEAN与STATEFUL SESSION BEAN的区别...22 4.4 如何改变SESSION BEAN的JNDI 名称22 4.5 SESSION BEAN的生命周期..........23 4.6 拦截器(INTERCEPTOR) ...26 4.7 依赖注入(DEPENDENCY ...

Global site tag (gtag.js) - Google Analytics