• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Hibernate 查询方式总结
    1. get() and load()
    Java代码
      session.get(Clazz, id);
      session.load(Clazz, id);
      session.get(Clazz, id);
      session.load(Clazz, id);
      说明: load()与get()的区别
      请注意如果没有匹配的数据库记录,load()方法可能抛出无法恢复的异常(unrecoverable exception)。 如果类的映射使用了代理(proxy),load()方法会返回一个未初始化的代理,直到你调用该代理的某方法时才会去访问数据库。 若你希望在某对象中创建一个指向另一个对象的关联,又不想在从数据库中装载该对象时同时装载相关联的那个对象,那么这种操作方式就用得上的了。 如果为相应类映射关系设置了batch-size, 那么使用这种操作方式允许多个对象被一批装载(因为返回的是代理,无需从数据库中抓取所有对象的数据)。
      如果你不确定是否有匹配的行存在,应该使用get()方法,它会立刻访问数据库,如果没有对应的行,会返回null。
    2. HQL
    Java代码
      
    复制代码 代码如下:

    // 返回一行记录
      String hql = "from TOrder o where o.id = ?";
      TOrder o = (TOrder) s.createQuery(hql)
        .setParameter(0, orderId)
        .uniqueResult();
      // 命名参数
      Query q = sess.createQuery("from DomesticCat cat where cat.name = :name");
      q.setString("name", "Fritz");
      // 位置参数
      Query q = sess.createQuery("from DomesticCat cat where cat.name = ?");
      q.setString(0, "Izi");
      // 命名参数列表
      Query q = sess.createQuery("from DomesticCat cat where cat.name in (:namesList)");
      q.setParameterList("namesList", names);
      // 分页查询
      Query q = sess.createQuery("from DomesticCat cat");
      q.setFirstResult(20);
      q.setMaxResults(10);
      List cats = q.list();
      3. Criteria
      List cats = sess.createCriteria(Cat.class)
       .add( Restrictions.like("name", "Fritz%") )
       .add( Restrictions.or(
       Restrictions.eq( "age", new Integer(0) ),
       Restrictions.isNull("age")
       ) )
       .addOrder( Order.asc("name") )
       .addOrder( Order.desc("age") )
       .list();
      
    // 返回一行记录
      String hql = "from TOrder o where o.id = ?";
      TOrder o = (TOrder) s.createQuery(hql)
        .setParameter(0, orderId)
        .uniqueResult();
      // 命名参数
      Query q = sess.createQuery("from DomesticCat cat where cat.name = :name");
      q.setString("name", "Fritz");
      // 位置参数
      Query q = sess.createQuery("from DomesticCat cat where cat.name = ?");
      q.setString(0, "Izi");
      // 命名参数列表
      Query q = sess.createQuery("from DomesticCat cat where cat.name in (:namesList)");
      q.setParameterList("namesList", names);
      // 分页查询
      Query q = sess.createQuery("from DomesticCat cat");
      q.setFirstResult(20);
      q.setMaxResults(10);
      List cats = q.list();

      3. Criteria
      
    复制代码 代码如下:

    List cats = sess.createCriteria(Cat.class)
       .add( Restrictions.like("name", "Fritz%") )
       .add( Restrictions.or(
       Restrictions.eq( "age", new Integer(0) ),
       Restrictions.isNull("age")
       ) )
       .addOrder( Order.asc("name") )
       .addOrder( Order.desc("age") )
       .list();   

    4. Native SQL
      Java代码
    复制代码 代码如下:

    String treeSql = "" +
       "select , level from tree t " +
       " start with t.parent_id = 0 " +
       " connect by prior t.id = t.parent_id";
      List result = session.createSQLQuery(treeSql)
       .addEntity("t", Tree.class)
       .addScalar("level", Hibernate.INTEGER)
       .list();
    String treeSql = "" +
       "select , level from tree t " +
       " start with t.parent_id = 0 " +
       " connect by prior t.id = t.parent_id";
      List result = session.createSQLQuery(treeSql)
       .addEntity("t", Tree.class)
       .addScalar("level", Hibernate.INTEGER)
       .list();

      5. Named SQL queries(不推荐)
      6. filter(不推荐)
      7. Detached queries(还没测试)
      The DetachedCriteria class lets you create a query outside the scope of a session, and then later execute it using some arbitrary Session
    您可能感兴趣的文章:
    • hibernate中的增删改查实现代码
    • 解决hibernate+mysql写入数据库乱码
    • hibernate更新数据方法小结
    • SSH整合中 hibernate托管给Spring得到SessionFactory
    • Hibernate环境搭建与配置方法(Hello world配置文件版)
    • 在Java的Hibernate框架中对数据库数据进行查询操作
    • jsp hibernate的分页代码
    • Hibernate识别数据库特有字段实例详解
    上一篇:jsp JFreeChart使用心得与例子
    下一篇:java struts常见错误以及原因分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Hibernate 查询方式总结 Hibernate,查询,方式,总结,