`

hiabernate 中createQuery与createSQLQuery两者区别

    博客分类:
  • Java
阅读更多

hiabernate 中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应用中应当注意。

 

 

转载 :【http://blog.163.com/charm_888/blog/static/608350020107254126654/】

分享到:
评论

相关推荐

    关于hibernate 的createQuery和createSqlQuery 的区别

    关于hibernate 的createQuery和createSqlQuery 的区别

    hibernate 的createSQLQuery的几种用法

    hibernate 的createSQLQuery的几种用法总结

    Hibernate 高级配置

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

    hql查询语句

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

    Hibernate中的query 分页.doc

    那么两者区别,以及两者的效率如何? 答:1.scroll是用JDBC2.0的可滚动结果集实现;query.setMaxResults();query.setFirstResult()是数据库SQL语句实现。 2.你说是在数据库就分页好呢?还是把结果集都取到内存再...

    用户管理系统

    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...

    Hibernate3使用经验

    1.Hibernate中配置参数 /** * 注意:HQL中使用参数的方法: * 1.根据参数名称来设置参数:匹配名称; * 2.根据参数位置来设置参数:匹配位置; */ //根据参数名称来设置参数 Query query = session.createQuery(...

    EJB3.0开发文档

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

    hibernate操作数据库笔记

    一.使用Hibernate的Session对象操作数据库 1.初始化Hibernate:在要使用Hibernate的类的方法中实例化... (7).createQuery(String HQL).list()/iterate()/uniqueResult(); //HQL(Hibernate Query Language)语句查询

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

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

    hibernate二级缓存

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

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

    Hibernate使用中防止SQL注入的几种方案 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。  在获取便利操作的同时...

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

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

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

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

    springboot-jpa-restful

    数据库= H2(在内存数据库中) JPA访问数据库 克隆项目并使用8055端口运行 CriteriaBuilder qb = entityManager . getCriteriaBuilder(); CriteriaQuery< Long> cq = qb . createQuery( Long . class); cq . ...

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

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

    Symfony查询方法实例小结

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

    新闻发布系统

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

    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 ...

    Java_EE_Udemy36:阅读可用航班清单

    TypedQuery<Flight> query = em.createQuery("SELECT f FROM Flight f", Flight.class); List<Flight> results = query.getResultList(); return results; } 在doGet内部的Flights(新Servlet)中: List...

Global site tag (gtag.js) - Google Analytics