Hibernate從零開始_08_檢索方式

    在實際項目應用中使用最多的就是數據的查詢,在這裏咱們介紹一下Hibernate的幾種檢索方式:java

    一、導航對象圖檢索方式

        在使用一對多關係時,一個客戶對應多個定單這時咱們能夠:sql

 TbUser user = (TbUser) session.get(TbUser.class, 1);
 Set<Order> orders = user.getOrders();    //導航對象圖檢索方式

    二、OID檢索方式

        OID檢索方式主要用Session的get()和load()方法實現對某條記錄的檢索數據庫

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

    三、HQL檢索方式

        根據HQL語句進行檢索,在Hibernate提供的檢索方式中是使用最多的一種:session

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

        預編譯模式:this

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

        動態綁定參數:spa

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

    四、QBC檢索方式

        QBC(Query By Criteria)是由org.hibernate.Criteria接口表示特定持久類的一個查詢。hibernate

  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 ?

    五、本地SQL檢索方式

    在Hibernate裏叫 Native SQL,他能夠直接使用jdbc的原生SQL語句去查詢,可是缺點在於:他的SQL每每跨數據庫時會出現不兼容現像。code

  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
相關文章
相關標籤/搜索