Hibernate的抓取策略
来源:互联网 发布:aws数据集 编辑:程序博客网 时间:2024/06/04 01:38
1.立即检索与延迟检索
当需要查询出一个对象的时候,立即检索会立刻发送SQL语句,而延迟检索则会在该对象被使用的时候才会发送SQL语句
a.单张表的查询中,在class标签上设置lazy属性即可
false:不使用延迟加载
true :使用延迟加载
b.一对多
设置fetch(SQL语句的形式,写法)和lazy(是否延迟加载)
对于一的一方:
fetch:join 那么不管lazy取何值,都是使用左外连接直接进行查询,就不涉及到延迟查询
fetch: select
lazy:false 那么再查询Customer的时候,Set<Order> orders 将会一起被查询出来,不过使用的是两条SQL语句而不是连接查询,即先查询Customer,再根据Customer的id查询Orders表
lazy:true 那么再查询Customer的时候,Set<Order> orders 将不会一起被查询出来,在需要使用order时才会发送SQL语句查询
lazy:extra 更加慵懒的模式,当查询出customer的时候,调用customer.getOrder.getSize(),那么发送的SQL语句将会是select count(*) from orders where id = ?
fetch: subselect 注意使用Query才会是使用子查询
lazy的属性的取值同上
对于多的一方
fetch:join,select
lazy:false,proxy,no-proxy
proxy:在many-to-one上设置,表示需不需要延迟加载取决于一的哪一方的class标签上lazy的属性值
2.批量抓取
在class标签上设置batch-size,表示一次可以查询几个该实例
<span style="white-space:pre"></span> /* * batch-size 根据Order集合查询Customer,在Customer的class上设置batch-size批量查询 * */@Testpublic void batch2(){Session session = HibernateUtils.openSession();Transaction tx = session.beginTransaction();List<Order> list = session.createQuery("from Order").list();for (Order order : list) {System.out.println(order.getCustomer().getName());}tx.commit();session.close();}/* * batch-size * */@Testpublic void batch(){Session session = HibernateUtils.openSession();Transaction tx = session.beginTransaction();List<Customer> list = session.createQuery("from Customer").list();for (Customer customer : list) {for (Order order : customer.getOrders()) {System.out.println(order);}}tx.commit();session.close();}
<class name="com.ywkj.domain.Customer" table="customer" batch-size="2"></class>
- Hibernate的抓取策略
- Hibernate的抓取策略
- hibernate的抓取策略
- Hibernate的抓取策略
- Hibernate的抓取策略
- Hibernate的抓取策略
- Hibernate的抓取策略
- hibernate的抓取策略
- Hibernate超凡的抓取策略
- Hibernate超凡的抓取策略
- hibernate的抓取策略 II
- hibernate的检索策略(抓取策略)
- Hibernate的四种抓取策略
- JPA和Hibernate抓取策略的差异
- Hibernate 原汁原味的四种抓取策略
- Hibernate 原汁原味的四种抓取策略
- Hibernate的检索(抓取)策略
- hibernate的抓取策略(fetch和lazy)
- iOS学习笔记 网络(一)NSURLConnection
- Android中开机启动service
- jQuery操作<input type="checkbox">
- PHP以json或xml格式返回请求数据
- LeetCode-----21. Merge Two Sorted Lists
- Hibernate的抓取策略
- zend studio自动换行
- iOS学习笔记-封装含静态库的动态库
- 【HDU 5889】【最短路+最小割 裸题】Barricade 【n点m边无向图在最短路上设置障碍,使得不管怎么走都会碰到障碍】
- 2016ACM/ICPC Shengyang Online-1001 Resident Evil
- spring 实现AOP的四种方式
- 十五章 从已知字符串找目的字符数
- SQL upper()函数
- java验证身份证号码是否有效源代码