zoukankan      html  css  js  c++  java
  • Hibernate的查询方式(简要)

    Hibernate的查询方式

     1.OID检索:

      使用session.get(Object.class,oid),session.load(Object.class,oid),根据表的主键查询

     2.对象导航检索以及联级映射的配置:

      根据已有对象查询与之对应的另外一些对象,比如一个Customer对象中有一个Linkmans(联系人对象)集合,当查询出Customer后,直接变量linkMans集合就可以查询到与之对应的联系人
      配置文件:

        一对一:<one-to-one name="User" class="com.lzy.hibernate.User" ></one-to-one>

        一对多:
        ​ 

        多对一:

            

     3.HQL检索:

      使用session.createQuery("HQL语句")查询

      条件的添加:
          1.使用占位符
      
          2.使用别名
      

      分页查询:q.setFirstResult(0):设置第一条数据的位置
                        q.setMaxResults(3):设置查询数据的条数(也就是每页多少条)

      多表查询:注意第一种写法和第二种写法的区别
      

     4.QBC检索:

                          Criteria criteria = session.createCriteria(Customer.class);
                          criteria.add(Restrictions.like("参数1","参数2"));
                 参数1:所添加条件的属性名,比如Customer类中的cust_name属性
                 参数2:条件的值,比如 "路%"  (这里使用的是like)
           QBC离线查询:当前台需要多条件查询的时候,在web层将这些条件封装到DetachedCriteria,便于传递到持久层
      

     5.SQL检索:

      session.createSQLQuery("正常SQL语句").list();

    如何使用Hibernate

    1.配置文件

      核心配置文件hibernate.cfg.xml:url后面的参数为  useUnicode=true&amp;characterEncoding=UTF-8  为了解决中午乱码。

       

      映射文件linkman.hbm.xml

      

     2.使用方法

     (1).在类中加载配置文件

      

      (2).将配置文件等放到工具类中

      

     3.openSession和getCurrentSession的区别

     openSession:打开一个新的session对象,而且每次使用都是打开一个新的session,假如连续使用多次,则获得的session不是同一个对象,并且使用完需要调用close方法关闭session。

     getCurrentSession:获取当前上下文一个session对象,当第一次使用此方法时,会自动产生一个session对象,并且连续使用多次时,得到的session都是同一个对象,这就是与openSession的区别之一,简单而言,getCurrentSession 就是:如果有已经使用的,用旧的,如果没有,建新的。

     在实际开发中,往往使用getCurrentSession多,因为一般是处理同一个事务(即是使用一个数据库的情况),所以在一般情况下比较少使用openSession或者说openSession是比较老旧的一套接口了;

     要使用getCurrentSession需要在核心配置文件中加:<property name="hibernate.current_session_context_class">thread</property>

  • 相关阅读:
    harbor镜像拉取到本地
    hadoop单机部署
    tcpdump抓包
    centos7安装桌面启动`
    lvm虚拟机扩容虚拟机根目录
    ubuntu 18 静态网址及生效
    ubuntu安装微信
    QPS、TPS、PV、UV、GMV、IP、RPS
    RabbitMQ死信队列
    mysql update语句与limit的结合使用
  • 原文地址:https://www.cnblogs.com/zy-Luo/p/11041708.html
Copyright © 2011-2022 走看看