zoukankan      html  css  js  c++  java
  • 【Hibernate 检索策略】

    HibernateDemo2

    public class HibernateDemo2 {
    
        //演示批量抓取
        @Test
        public void testSelect3() {
            SessionFactory sessionFactory = null;
            Session session = null;
            Transaction tx = null;
            try {
                sessionFactory = HibernateUtils.getSessionFactory();
                session = sessionFactory.openSession();
                tx = session.beginTransaction();
    
                //查询所有客户
                Criteria criteria = session.createCriteria(Customer.class);
                List<Customer> list = criteria.list();
                //得到每个客户里面所有的联系人
                for (Customer customer : list) {
                    System.out.println(customer.getCid() + "::" + customer.getCustName());
                    //每个客户里面所有的联系人
                    Set<LinkMan> setLinkMan = customer.getSetLinkMan();
                    for (LinkMan linkMan : setLinkMan) {
                        System.out.println(linkMan.getLkm_id() + "::" + linkMan.getLkm_name());
                    }
                }
    
                tx.commit();
            } catch (Exception e) {
                tx.rollback();
            } finally {
                session.close();
                sessionFactory.close();
            }
        }
    
        //演示检索策略
        @Test
        public void testSelect2() {
            SessionFactory sessionFactory = null;
            Session session = null;
            Transaction tx = null;
            try {
                sessionFactory = HibernateUtils.getSessionFactory();
                session = sessionFactory.openSession();
                tx = session.beginTransaction();
    
                //根据cid=1客户
                //执行get方法之后,是否发送sql语句
                //调用get方法马上发送sql语句查询数据库
    //            Customer customer = session.get(Customer.class, 1);
    //
    //            System.out.println(customer.getCid());
                /*
                 * 1 调用load方法之后,不会马上发送sql语句
                 * (1)返回对象里面只有 id值
                 *
                 * 2 得到对象里面不是id的其他值时候才会发送语句
                 * */
                Customer customer = session.load(Customer.class, 2);
    
                System.out.println(customer.getCid());
    
                System.out.println(customer.getCustName());
    
                tx.commit();
            } catch (Exception e) {
                tx.rollback();
            } finally {
                session.close();
                sessionFactory.close();
            }
        }
    
        //演示对象导航查询
        @Test
        public void testSelect1() {
            SessionFactory sessionFactory = null;
            Session session = null;
            Transaction tx = null;
            try {
                sessionFactory = HibernateUtils.getSessionFactory();
                session = sessionFactory.openSession();
                tx = session.beginTransaction();
    
                //根据cid=1客户,再查询这个客户里面所有联系人
                Customer customer = session.get(Customer.class, 1);
                //再查询这个客户里面所有联系人
                //直接得到客户里面联系人的set集合
    
                //得到set集合,没有发送语句
                Set<LinkMan> linkman = customer.getSetLinkMan();
    
                // 发送语句
                System.out.println(linkman.size());
    
                tx.commit();
            } catch (Exception e) {
                tx.rollback();
            } finally {
                session.close();
                sessionFactory.close();
            }
        }
    }
  • 相关阅读:
    C++学习笔记十关联容器
    Ubuntu下使用GDB断点Go程序
    各种语言的数字转罗码方法的实现
    为什么 ++i和i++的效果是一样的,试了javascript ,c++ java
    罗马数字转换阿拉伯数字(Java版,考虑较为全面)
    C++学习笔记九顺序容器(二) ForFreeDom 博客园
    智立方 屁话真言108:能盛事者能成事_智立方的杨石头_新浪博客
    腾讯搜搜高管吴军离职的传闻与真相
    罗马数字_百度百科
    快速深入一门语言的几个问题 Shell909090 随笔杂记
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/12293296.html
Copyright © 2011-2022 走看看