- 浏览: 357400 次
- 性别:
- 来自: 广东珠海
文章分类
最新评论
-
cuiyijing:
[size=small]马士兵 26_homework_dml ...
SQL面试题 -
utobe:
兄弟 你真的出名了,尚学堂 oracle 马士兵的视频拿你的题 ...
SQL面试题 -
tlqtangok:
没看懂,能解释一下吗?
安装Oracle后java的jvm会报错 -
a114d:
itling 写道尚学堂的demo楼上威武
hibernate 全面学习【hibernate抓取策略 】 -
wohenshuaiba:
不错,但是没写return checkimg( this ); ...
图片上传
Hibernate抓取策略
默认fetch的配置,也就fetch="select",参见Student.hbm.xml文件,如:
<many-to-one name="classes" column="classid" fetch="select" />
Hibernate抓取策略
设置fetch="join",参见Student.hbm.xml文件,如:
<many-to-one name="classes" column="classid" fetch="join" />
但是会导致lazy失效
Hibernate抓取策略
设置fetch=“join”,参见:Classes.hbm.xml,如:
<set name="students" inverse="true" fetch="join">
但会导致lazy失效
Hibernate抓取策略
设置fetch=“subselect”,参见:Classes.hbm.xml,如:
<set name="students" inverse="true" fetch="subselect">
Hibernate抓取策略
针对fetch="select"配置进行优化,加入batch,如:
<class name="com.bjsxt.hibernate.Classes" table="t_classes" batch-size="5">
Hibernate抓取策略
在集合上设置batch
默认fetch的配置,也就fetch="select",参见Student.hbm.xml文件,如:
<many-to-one name="classes" column="classid" fetch="select" />
Hibernate抓取策略
设置fetch="join",参见Student.hbm.xml文件,如:
<many-to-one name="classes" column="classid" fetch="join" />
但是会导致lazy失效
Hibernate抓取策略
设置fetch=“join”,参见:Classes.hbm.xml,如:
<set name="students" inverse="true" fetch="join">
但会导致lazy失效
Hibernate抓取策略
设置fetch=“subselect”,参见:Classes.hbm.xml,如:
<set name="students" inverse="true" fetch="subselect">
Hibernate抓取策略
针对fetch="select"配置进行优化,加入batch,如:
<class name="com.bjsxt.hibernate.Classes" table="t_classes" batch-size="5">
Hibernate抓取策略
在集合上设置batch
<hibernate-mapping> <class name="com.bjsxt.hibernate.Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- <set name="students" cascade="all" order-by="id"> --> <set name="students" inverse="true"> <key column="classid"/> <one-to-many class="com.bjsxt.hibernate.Student"/> </set> </class> </hibernate-mapping> <hibernate-mapping> <class name="com.bjsxt.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="classes" column="classid" fetch="select" /> </class> </hibernate-mapping> package com.bjsxt.hibernate; import java.io.Serializable; import org.hibernate.Session; import junit.framework.TestCase; public class FetchTest extends TestCase { public void testFetch1() { Session session = null; try { session = HibernateUtils.getSession(); Student student = (Student)session.load(Student.class, 1); System.out.println("学生姓名:" + student.getName()); System.out.println("所属班级:" + student.getClasses().getName()); }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } }
<hibernate-mapping> <class name="com.bjsxt.hibernate.Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- <set name="students" cascade="all" order-by="id"> --> <set name="students" inverse="true"> <key column="classid"/> <one-to-many class="com.bjsxt.hibernate.Student"/> </set> </class> </hibernate-mapping> <hibernate-mapping> <class name="com.bjsxt.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="classes" column="classid" fetch="join" /> </class> </hibernate-mapping> package com.bjsxt.hibernate; import java.io.Serializable; import org.hibernate.Session; import junit.framework.TestCase; public class FetchTest extends TestCase { public void testFetch1() { Session session = null; try { session = HibernateUtils.getSession(); Student student = (Student)session.load(Student.class, 1); System.out.println("学生姓名:" + student.getName()); System.out.println("所属班级:" + student.getClasses().getName()); }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } }
<hibernate-mapping> <class name="com.bjsxt.hibernate.Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- <set name="students" cascade="all" order-by="id"> --> <set name="students" inverse="true" fetch="select"> <key column="classid"/> <one-to-many class="com.bjsxt.hibernate.Student"/> </set> </class> </hibernate-mapping> <hibernate-mapping> <class name="com.bjsxt.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="classes" column="classid"/> </class> </hibernate-mapping> package com.bjsxt.hibernate; import java.io.Serializable; import java.util.Iterator; import java.util.Set; import org.hibernate.Session; import junit.framework.TestCase; public class FetchTest extends TestCase { public void testFetch1() { Session session = null; try { session = HibernateUtils.getSession(); Classes classes = (Classes)session.load(Classes.class, 1); System.out.println("班级:" + classes.getName()); Set students = classes.getStudents(); for (Iterator iter = students.iterator(); iter.hasNext();) { Student student = (Student)iter.next(); System.out.println(student.getName()); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } }
<hibernate-mapping> <class name="com.bjsxt.hibernate.Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- <set name="students" cascade="all" order-by="id"> --> <set name="students" inverse="true" fetch="join"> <key column="classid"/> <one-to-many class="com.bjsxt.hibernate.Student"/> </set> </class> </hibernate-mapping> <hibernate-mapping> <class name="com.bjsxt.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="classes" column="classid"/> </class> </hibernate-mapping> package com.bjsxt.hibernate; import java.io.Serializable; import java.util.Iterator; import java.util.Set; import org.hibernate.Session; import junit.framework.TestCase; public class FetchTest extends TestCase { public void testFetch1() { Session session = null; try { session = HibernateUtils.getSession(); Classes classes = (Classes)session.load(Classes.class, 1); System.out.println("班级:" + classes.getName()); Set students = classes.getStudents(); for (Iterator iter = students.iterator(); iter.hasNext();) { Student student = (Student)iter.next(); System.out.println(student.getName()); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } }
<hibernate-mapping> <class name="com.bjsxt.hibernate.Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- <set name="students" cascade="all" order-by="id"> --> <set name="students" inverse="true" fetch="subselect"> <key column="classid"/> <one-to-many class="com.bjsxt.hibernate.Student"/> </set> </class> </hibernate-mapping> package com.bjsxt.hibernate; import java.io.Serializable; import java.util.Iterator; import java.util.List; import java.util.Set; import org.hibernate.Session; import junit.framework.TestCase; public class FetchTest extends TestCase { public void testFetch1() { Session session = null; try { session = HibernateUtils.getSession(); Classes classes = (Classes)session.load(Classes.class, 1); System.out.println("班级:" + classes.getName()); Set students = classes.getStudents(); for (Iterator iter = students.iterator(); iter.hasNext();) { Student student = (Student)iter.next(); System.out.println(student.getName()); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } public void testFetch2() { Session session = null; try { session = HibernateUtils.getSession(); List Classes = session.createQuery("select c from Classes c where c.id in(1, 2, 3)").list(); for (Iterator iter = Classes.iterator(); iter.hasNext();) { Classes cls = (Classes)iter.next(); System.out.println("班级:" + cls.getName()); for (Iterator iter1 = cls.getStudents().iterator(); iter1.hasNext();) { Student student = (Student)iter1.next(); System.out.println(student.getName()); } } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } }
<hibernate-mapping> <class name="com.bjsxt.hibernate.Classes" table="t_classes" batch-size="5"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- <set name="students" cascade="all" order-by="id"> --> <set name="students" inverse="true"> <key column="classid"/> <one-to-many class="com.bjsxt.hibernate.Student"/> </set> </class> </hibernate-mapping> <hibernate-mapping> <class name="com.bjsxt.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="classes" column="classid"/> </class> </hibernate-mapping> package com.bjsxt.hibernate; import java.io.Serializable; import java.util.Iterator; import java.util.List; import org.hibernate.Session; import junit.framework.TestCase; public class FetchTest extends TestCase { public void testFetch1() { Session session = null; try { session = HibernateUtils.getSession(); List students = session.createQuery("select s from Student s where s.id in(:ids)") .setParameterList("ids", new Object[]{1, 11, 21, 31, 41, 51, 61, 71, 81, 91}) .list(); for (Iterator iter = students.iterator(); iter.hasNext();) { Student student = (Student)iter.next(); System.out.println("学生:" + student.getName()); System.out.println("班级:" + student.getClasses().getName()); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } }
<hibernate-mapping> <class name="com.bjsxt.hibernate.Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- <set name="students" cascade="all" order-by="id"> --> <set name="students" inverse="true" batch-size="5"> <key column="classid"/> <one-to-many class="com.bjsxt.hibernate.Student"/> </set> </class> </hibernate-mapping> <hibernate-mapping> <class name="com.bjsxt.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="classes" column="classid"/> </class> </hibernate-mapping> package com.bjsxt.hibernate; import java.io.Serializable; import java.util.Iterator; import java.util.List; import java.util.Set; import org.hibernate.Session; import junit.framework.TestCase; public class FetchTest extends TestCase { public void testFetch1() { Session session = null; try { session = HibernateUtils.getSession(); List classes = session.createQuery("from Classes").list(); for (Iterator iter = classes.iterator(); iter.hasNext();) { Classes cls = (Classes)iter.next(); System.out.println("班级:" + cls.getName()); for (Iterator iter1 = cls.getStudents().iterator(); iter1.hasNext();) { Student student = (Student)iter1.next(); System.out.println(student.getName()); } } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } }
发表评论
-
hibernate
2012-05-14 14:27 0<?xml version="1.0" ... -
hibernate 全面学习->hibernate 关联映射学习
2008-07-04 16:26 4859hibernate 关联映射学习包括 一对一,一对多,多对多 ... -
hibernate 全面学习【hibernate session学习】
2008-07-04 16:16 2139测试对象的生命周期: ... -
hibernate 全面学习【悲观锁和乐观锁 学习】
2008-07-04 16:12 1503乐观锁: 大多数基于数据版本(version)记录机制实现,一 ... -
hibernate 全面学习【lazy策略 】
2008-07-04 15:58 7074lazy策略可以用在: * <class>标签 ... -
hibernate 全面学习【hibernate hsql语句学习 】
2008-07-04 15:31 4855Hibernate hql * 注意hql的大小写敏感性 ... -
hibernate 全面学习【hibernate 粗粒度分析 】
2008-07-04 15:16 1547Hibernate继承映射的第一 ... -
hibernate 全面学习【hibernate 集合映射】
2008-07-04 15:07 2601集合的映射 set list array map packag ... -
hibernate 全面学习【hibernate 复合主键映射】
2008-07-04 15:01 1808复合主键映射 通常将复合主键相关属性,单独抽取出来,建立一个 ... -
hibernate 全面学习 【hibernte 组件映射学习 】
2008-07-04 14:59 1119component(组件映射) 在hibernate中,c ... -
hibernate 全面学习 【hibernate 缓存学习 】
2008-07-04 14:26 1885hibernate 缓存分为一级缓存和二级缓存,及查询缓存 ... -
hibernate 全面学习 【hibernate 基本映射】
2008-07-04 14:16 1215Hibernate基本映射: 类-->数据库表 普通属 ... -
Hibernate createCriteria查询
2007-05-18 08:36 165711、创建一个Criteria实例 net.sf.hiberna ... -
hibernate中Query和Criteria的用法
2007-03-15 17:20 2946//Scenario 1: query all ... -
“generating artifacts"的解决!
2007-03-14 13:45 11618很多人在用myeclipse4.1.1对一个表生成映射文件的时 ... -
hibernate+spring学习例子
2007-02-26 15:00 1915看例子,来这习hibernate 和spring -
hibernate问题,贴上来
2007-02-26 11:06 2123(1)hibernate警告 Could no ... -
利用模板方式写一个管理hibernate 中session的方法
2007-02-23 09:41 3537package com.t48.hr.util; imp ... -
解快hibernate查询带中文乱码问题
2007-02-20 14:32 2399"from ManPo ma where ma.na ... -
Hibernate分页
2007-02-06 08:50 1495import org.hibernate.Query; imp ...
相关推荐
hibernate3数据检索、抓取策略 、 注解的使用
hibernate抓取策略和懒加载案例,供大家下载查看。大家都知道,hibernate都设计到一个优化问题。
NULL 博文链接:https://364232252.iteye.com/blog/2368890
Hibernate 学习笔记 get和load的区别 一对一,一对多,多对多 悲观锁,乐观锁 hibernate查询语言hql hibernate一级缓存、二级缓存 抓取策略
Hibernate 简介 Hibernate 开发流程 Hibernate 配置文件 Hibernate 核心接口和类 Hibernate ORM映射 HQL Hibernate 懒加载机制与抓取策略 Hibernate 缓存 Hibernate 锁机制
Hibernate 学习笔记 Hibernate 学习笔记 1 第一个hibernate项目(hibernate_first) 2 测试实体对象的生命周期(hibernate_session) 3 ...hibernate抓取策略 53 Hibernate最佳实践(Best Practices) 55
NULL 博文链接:https://364232252.iteye.com/blog/2368811
19.1.2. 调整抓取策略(Tuning fetch strategies) 19.1.3. 单端关联代理(Single-ended association proxies) 19.1.4. 实例化集合和代理(Initializing collections and proxies) 19.1.5. 使用批量抓取(Using...
NULL 博文链接:https://364232252.iteye.com/blog/2368886
学习成长路,Hibernate总结: 1.Hibernate入门优缺点、 2.Hibernate的操作CRUD、 3.主键生成机制、 4.持久化对象的状态、 ...8.Hibernate检索策略(fetch抓取策略)、 9.二级缓存、 10.Hbernate的检索方式(HQL语句)
hibernte学习第四天代码,Hibernate的查询方式和抓取策略
你将直接深入到Hibernate的富编程模型之中,贯穿映射、查询、抓取策略、事务、会话、缓存以及更多其他内容。书中图文并茂地介绍了数据库设计和优化技术的实践。在本书中,作者详尽介绍了具有Java持久化2.1标准的...
19.1.2. 调整抓取策略(Tuning fetch strategies) 19.1.3. 单端关联代理(Single-ended association proxies) 19.1.4. 实例化集合和代理(Initializing collections and proxies) 19.1.5. 使用批量抓取(Using...
Hibernate 的延迟加载本质上就是代理模式的应用,当程序通过 Hibernate 装载一个实体时,默认情况下,Hibernate 并不会立即抓取它的集合属性、关联实体所以对应的记录,而是通过生成一个代理来表示这些集合属性、...
有很多人认为Hibernate天生效率比较低,确实,在普遍情况下,需要将执行转换为SQL语句的 Hibernate 的效率低于直接JDBC存取,然而,在经过比较好...Hibernate的优化策略: 1.抓取优化 2.二级缓存 3.批量数据操作 4.杂项
13.2 选择抓取策略 13.2.1 批量预抓取数据 13.2.2 通过子查询预抓取集合 13.2.3 通过联结即时抓取 13.2.4 给二级表优化抓取 13.2.5 优化指导方针 13.3 高速缓存基本原理 13.3.1 高速...
19.1.2. 调整抓取策略(Tuning fetch strategies) 19.1.3. 单端关联代理(Single-ended association proxies) 19.1.4. 实例化集合和代理(Initializing collections and proxies) 19.1.5. 使用批量抓取(Using...
19.1.2. 调整抓取策略(Tuning fetch strategies) 19.1.3. 单端关联代理(Single-ended association proxies) 19.1.4. 实例化集合和代理(Initializing collections and proxies) 19.1.5. 使用批量抓取(Using...