• 【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();
            }
        }
    }
  • 相关阅读:
    Centos7 下安装python3.7
    mysql数据库定时备份脚本
    helm 安装EFK(Elasticsearch+Filebeat+Kibana)收集容器日志
    kubernetes Ingress-nginx 配置TLS
    Kubernetes核心原理(三)之Scheduler
    Kubernetes核心原理(二)之Controller Manager
    预习作业(四)
    预习作业(三)
    预习作业(二)
    预习作业(一)
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/12293296.html
Copyright © 2020-2023  润新知