hibernate几种查询方式,hibernate查询语句

  hibernate几种查询方式,hibernate查询语句

  //创建询问对象

  查询q=会话。创建查询( from Customer as c where c . name=:name );

  //动态绑定参数

  q.setString(name , Tom );

  //执行查询语句

  q . list();

  只需要提供面向对象的语句查询语句,休眠就能根据映射文件的配置,将语句转换为SQL,并将数据库编程结果集结果集映射为关联的对象图。

  4)QBC检索方式

  按条件查询

  //创建标准对象

  标准标准=会话。创建标准(客户。类);

  //设定查询条件

  标准标准1=限制。like( name , T % );

  标准标准2=限制。eq( age ,新整数(21));

  criteria=criteria.add(标准1)。添加(标准2);

  //执行查询语句

  标准。list();

  条件查询还提供了一种昆士兰保险集团子功能(按实例查询),能够把示例客户对象中所有不为空的属性作为查询条件:

  session.createQuery(来自客户,其中年龄=:年龄,姓名=:姓名)。设置属性(例如客户)。list();

  查询q=会话。创建SQL查询( select * from CUSTOMERS where . );

  设置字符串(.);

  q . list();

  QBC:

  不需要显式指定别名,休眠会自动把查询语句的根节点赋予别名"这个"

  会话。创建标准(客户。类)。add(Restrictions.eq(this.name , tom ))。list();

  语句和条件查询支持多态查询,能查询出当前类及其所有子类实例。

  排序HQL:

  会话。创建查询(“从客户到订单,按客户名称、客户年龄、desc”);

  QBC:

  会话。创建标准(客户。类).addOrder(Order.asc(name ))。添加订单(订单。desc(‘时代’);

  分页查询查询。设置第一结果(97);

  查询。setmaxresults(10);

  查询。list();

  标准类似。

  检索单个对象session.createQuery(.)。setMaxResults(1)。uniqueResult();

  标准类似。

  如果询问包含多个对象,但没有调用setMaxResults(1),则会抛出非唯一结果异常。

  Query.iterate()

  和目录功能一样,但使用的查询机制不同:

  目录会返回对象的所有属性,而重复则只返回身份属性

  迭代器客户=查询。iterate();

  while(customers.hasNext()){

  客户顾客=(客户)客户。next();//1

  字符串名称=cus。getname();

  }

  执行到customers.next()时,先查会议缓存,如果缓存中已存在该对象,则直接返回;若不存在,则查询数据库(返回所有属性)

  适用场景:

  客户表中有大量字段

  启用了二级缓存,并且缓存中可能已包含待查询的顾客对象Query.setReadOnly()默认情况下,如果对查询到的对象的属性做了修改,则当冬眠清理缓存时,会去同步更新回数据库。

  如果要只允许读取属性值,而不允许更新属性值,可用setReadOnly().

hibernate几种查询方式,hibernate查询语句