Hibernate从零开始_08_检索方式

    在实际项目应用中使用最多的就是数据的查询,在这里我们介绍一下Hibernate的几种检索方式:

    1、导航对象图检索方式

        在使用一对多关系时,一个客户对应多个定单这时我们可以:

 TbUser user = (TbUser) session.get(TbUser.class, 1);
 Set<Order> orders = user.getOrders();    //导航对象图检索方式

    2、OID检索方式

        OID检索方式主要用Session的get()和load()方法实现对某条记录的检索

 TbUser user = (TbUser) session.get(TbUser.class, 1);
 TbUser user = (TbUser) session.load(TbUser.class, 1);

    3、HQL检索方式

        根据HQL语句进行检索,在Hibernate提供的检索方式中是使用最多的一种:

  String hql = "from Order o where o.id=1";
  Query query = session.createQuery(hql);
  Order o = (Order) query.uniqueResult();

        预编译模式:

  String hql = "from Order o where o.id=?";
  Query query = session.createQuery(hql);
  query.setParameter(1, 1);
  Order o = (Order) query.uniqueResult();

        动态绑定参数:

  String hql = "from Order o where o.id=:id";
  Query query = session.createQuery(hql);
  query.setParameter("id", 1L);
  Order o = (Order) query.uniqueResult();

    4、QBC检索方式

        QBC(Query By Criteria)是由org.hibernate.Criteria接口表示特定持久类的一个查询。

  Criteria c = session.createCriteria(Order.class);
  c.add(Restrictions.like("addr","b%"));    //添加限制条件
  List<Order> orderList = c.list(); 
  
  //查询
  //Hibernate: /* criteria query */ select this_.id as id1_0_0_, this_.addr as addr2_0_0_, this_.totalprice as totalpri3_0_0_, this_.tb_user_id as tb_user_4_0_0_ from db_hibernate.tb_order this_ where this_.addr like ?

    5、本地SQL检索方式

    在Hibernate里叫 Native SQL,他可以直接使用jdbc的原生SQL语句去查询,但是缺点在于:他的SQL往往跨数据库时会出现不兼容现像。

  String sql = "select o.id,o.addr from order o where o.id=1";
  Query query = session.createSQLQuery(sql);
  List<Object[]> listObj = query.list(); 
  
  //查询
  //Hibernate: /* dynamic native SQL query */ select o.id,o.addr from tb_order o where o.id=1

转载于:https://my.oschina.net/u/159221/blog/192045

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值