Hibernate Part5

来源:互联网 发布:js循环输出表格 编辑:程序博客网 时间:2024/06/05 03:49

原作者:尚硅谷-佟刚


这里写图片描述

这里写图片描述


这里写图片描述


一对多一端:

List<Customer> customers=session.createQuery("FROM Customer").list();        System.out.println(customers.size());        for(Customer customer:customers){                System.out.println(customer.getOrders().size());        }

fetch :select:lazy,batch-size 都有效
fetch:select 默认 。subselect 以子查询的方式加载所有的set集合 batch-size属性失效,lazy属性有效
对于以上代码
fetch:join 无效 和取值 select 效果一样


Customer customer=(Customer) session.get(Customer.class, 1);        System.out.println(customer.getCustomerName());        System.out.println(customer.getOrders());

join:在加载1的一端对象时,使用迫切左外连接(使用左外连接进行查询,且把集合属性进行初始化)的方式检索n的一端的集合属性
忽略lazy属性,batch-size属性
HQL查询忽略fetch=join的取值

fetch:select lazy=”true”
SQL语句如下:

Hibernate:     select        customer0_.CUSTOMER_ID as CUSTOMER1_0_0_,        customer0_.CUSTOMER_NAME as CUSTOMER2_0_0_     from        CUSTOMERS customer0_     where        customer0_.CUSTOMER_ID=?C-AAHibernate:     select        orders0_.CUSTOMER_ID as CUSTOMER3_0_1_,        orders0_.ORDER_ID as ORDER_ID1_1_1_,        orders0_.ORDER_ID as ORDER_ID1_1_0_,        orders0_.ORDER_NAME as ORDER_NA2_1_0_,        orders0_.CUSTOMER_ID as CUSTOMER3_1_0_     from        ORDERS orders0_     where        orders0_.CUSTOMER_ID=?     order by        orders0_.ORDER_NAME desc[com.atguigu.hibernate.strategy.Order@21, com.atguigu.hibernate.strategy.Order@20]

多对一一端


这里写图片描述

这里写图片描述


List<Order> orders=session.createQuery("FROM Order o").list();        for(Order order:orders){            System.out.println(order.getCustomer());                System.out.println(order.getCustomer().getCustomerName());        }

fetch:select 时 lazy batch-size 属性值都有效
fetch:join 无效 和取值select效果相同


Order order=(Order) session.load(Order.class, 1);
System.out.println(order.getCustomer().getClass());
System.out.println(order.getCustomer().getCustomerName());


fetch:join lazy batch-size 属性值无效

fetch:select lazy=”true” SQL语句如下:


Hibernate:     select        order0_.ORDER_ID as ORDER_ID1_1_0_,        order0_.ORDER_NAME as ORDER_NA2_1_0_,        order0_.CUSTOMER_ID as CUSTOMER3_1_0_     from        ORDERS order0_     where        order0_.ORDER_ID=?class com.atguigu.hibernate.strategy.Customer_$$_javassist_1Hibernate:     select        customer0_.CUSTOMER_ID as CUSTOMER1_0_0_,        customer0_.CUSTOMER_NAME as CUSTOMER2_0_0_     from        CUSTOMERS customer0_     where        customer0_.CUSTOMER_ID=?C-AA