`
newleague
  • 浏览: 1505340 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

hibernate实例简析-hibernate_lazy_for_collection

阅读更多
hibernate在集合上的lazy策略,可以取值:true/false/extra

<class>标签上的lazy不会影响到集合上的lazy特性
===
<hibernate-mapping package="com.bjsxt.hibernate">
<class name="Classes" table="t_classes">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="students" inverse="true" cascade="all" lazy="extra">
<key column="classesid"/>
<one-to-many class="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="classesid"/>
</class>
</hibernate-mapping>

===
/**
* 保持lazy默认**/
//不会发出sql
Classes classes = (Classes)session.load(Classes.class, 1);

//会发出sql
System.out.println("classes.name=" + classes.getName());

//不会发出sql
Set students = classes.getStudents();

//会发出sql
for (Iterator iter=students.iterator(); iter.hasNext();) {
Student student = (Student)iter.next();
System.out.println("student.name=" + student.getName());
}
---
//不会发出sql
Classes classes = (Classes)session.load(Classes.class, 1);

//会发出sql
System.out.println("classes.name=" + classes.getName());

//不会发出sql
Set students = classes.getStudents();

//会发出sql,发出查询全部数据的sql
System.out.println("student.count=" + students.size());
===
/**
* 设置<class>标签上的lazy=false**/
//会发出sql
Classes classes = (Classes)session.load(Classes.class, 1);

//不会发出sql
System.out.println("classes.name=" + classes.getName());

//不会发出sql
Set students = classes.getStudents();

//会发出sql
for (Iterator iter=students.iterator(); iter.hasNext();) {
Student student = (Student)iter.next();
System.out.println("student.name=" + student.getName());
}
===
/**
* 设置集合上的lazy=false,其它默认**/
//不会发出sql
Classes classes = (Classes)session.load(Classes.class, 1);

//会发出sql,会发出两条sql分别加载Classes和Student
System.out.println("classes.name=" + classes.getName());

//不会发出sql
Set students = classes.getStudents();

//不会发出sql
for (Iterator iter=students.iterator(); iter.hasNext();) {
Student student = (Student)iter.next();
System.out.println("student.name=" + student.getName());
}
---
//不会发出sql
Classes classes = (Classes)session.load(Classes.class, 1);

//会发出sql,会发出两条sql分别加载Classes和Student
System.out.println("classes.name=" + classes.getName());

//不会发出sql
Set students = classes.getStudents();

//不会发出sql
System.out.println("student.count=" + students.size());
===
/**
* 设置集合上的lazy=extra,其它默认**/
//不会发出sql
Classes classes = (Classes)session.load(Classes.class, 1);

//会发出sql
System.out.println("classes.name=" + classes.getName());

//不会发出sql
Set students = classes.getStudents();

//会发出sql
for (Iterator iter=students.iterator(); iter.hasNext();) {
Student student = (Student)iter.next();
System.out.println("student.name=" + student.getName());
}
---
//不会发出sql
Classes classes = (Classes)session.load(Classes.class, 1);

//会发出sql
System.out.println("classes.name=" + classes.getName());

//不会发出sql
Set students = classes.getStudents();
//会发出sql,发出一条比较智能的sql
System.out.println("student.count=" + students.size());
===
Classes classes = new Classes();
classes.setName("尚学堂");
session.save(classes);

Student student1 = new Student();
student1.setName("10");
student1.setClasses(classes);
session.save(student1);

Student student2 = new Student();
student2.setName("祖儿");
student2.setClasses(classes);
session.save(student2);
分享到:
评论

相关推荐

    lazy_object_proxy-1.6.0-cp37-cp37m-win_amd64

    lazy_object_proxy-1.6.0-cp37-cp37m-win_amd64

    hibernate-release-4.3.10.Final.zip

    - **SessionFactory**:是线程安全的,用于创建Session实例,它是整个Hibernate的核心,管理实体类和数据库表的映射信息。 - **Session**:是操作数据库的入口,提供了一种基于对象的操作方式,支持CRUD操作,并...

    lazy_object_proxy-1.7.1-pp38-pypy38_pp73-win_amd64.whl

    lazy_object_proxy-1.7.1-pp38-pypy38_pp73-win_amd64.whl

    hibernate-distribution-3.6.6.Final-dist

    《Hibernate 3.6.6:持久化框架的里程碑版本》 Hibernate,作为Java领域中最受欢迎的对象关系映射(ORM)框架之一,以其强大的功能和易用性深受开发者喜爱。在Hibernate 3.6.6这个版本中,我们看到了一个稳定、成熟...

    lazy_object_proxy-1.6.0-pp37-pypy37_pp73-win_amd64

    lazy_object_proxy-1.6.0-pp37-pypy37_pp73-win_amd64

    lazy-snapping--master.zip_lazy-snapping

    标题中的“lazy-snapping--master.zip_lazy-snapping”暗示了这是一个关于“lazy-snapping”技术的项目源码或实现,而“master.zip”通常代表GitHub仓库的主分支压缩包。描述提到“基于lazy-snapping的图片分割代码...

    lazy_object_proxy-1.6.0-cp38-cp38-win_amd64

    lazy_object_proxy-1.6.0-cp38-cp38-win_amd64

    lazy_object_proxy-1.4.3-cp27-cp27m-win_amd64

    lazy_object_proxy-1.4.3-cp27-cp27m-win_amd64

    hibernate-release-5.0.7 全包

    Hibernate使用它来实现类的动态代理和字节码增强,例如懒加载(lazy loading)和CGLIB代理。 3. **antlr-2.7.7.jar**:ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。在...

    hibernate源码release-4.1.4.Final版

    《深入剖析Hibernate 4.1.4.Final源码》 Hibernate,作为一款著名的Java对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。它通过提供对象化的数据访问接口,使得开发者可以更加专注于业务...

    Python库 | lazy_object_proxy-0.1.0-cp33-none-win_amd64.whl

    python库。 资源全名:lazy_object_proxy-0.1.0-cp33-none-win_amd64.whl

    Hibernate之第3解之-hibernate_hibernate_many2one_1

    默认情况下,Hibernate采用`LAZY`加载,即在需要时才加载关联的对象,以避免不必要的性能开销。若希望关联对象与主对象一起加载,可以设置`fetch = FetchType.EAGER`。 4. **反向引用**: 虽然`@ManyToOne`注解在...

    hibernate-extensions-2.1.3

    1. **延迟加载(Lazy Loading)增强**:Hibernate核心库已经支持延迟加载,但扩展可能提供了更精细的控制,例如按需加载关联的对象集合,减少内存占用和提高性能。 2. **批量操作**:批量插入、更新和删除功能可以...

    hibernate-orm-3.3源码

    Hibernate 支持懒加载(Lazy Loading),即延迟加载关联对象,直到真正需要时才从数据库加载,有效避免了"数据溢出"问题。它通过生成代理对象实现这一功能。 七、事件监听器 Hibernate 提供了一套事件监听系统,...

    C++ for Lazy Programmers - Will Briggs_C++_

    C++ for Lazy Programmers - Will Briggs

    hibernate-release-4.2.3.lib.zip

    懒加载(Lazy Loading)是Hibernate的一大特性,它允许对象的关联属性在需要时才加载,从而减少数据库访问。立即加载(Eager Loading)则会在初始加载对象时,同时加载关联的数据。 七、事务处理 在Hibernate中,...

    hibernate-release-5.0.7.Final.zip官方

    ### Hibernate 5.0.7.Final版本解析与应用指南 #### 一、概述 Hibernate 是一款开源的对象关系映射(Object-Relational Mapping,简称 ORM)框架,它为 Java 应用程序提供了对数据库存储的高效管理和访问能力。...

    hibernate-entitymanager-3.4.0.GA

    【标题】"hibernate-entitymanager-3.4.0.GA" 是一个与Java持久化框架Hibernate Entity Manager相关的库,这个版本号表明它是2009年左右发布的一个稳定版本。Hibernate Entity Manager是JPA(Java Persistence API)...

    hibernate-release-4.2.2.Final.zip

    《Hibernate 4.2.2.Final:持久化框架的核心技术与应用》 Hibernate,作为Java领域中的一个著名对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者能够以面向对象的方式处理数据库交互。在hibernate-...

    hibernate-release-5.2.10

    《深入理解Hibernate 5.2.10:企业级持久化框架解析》 Hibernate作为Java领域最著名的对象关系映射(ORM)框架之一,一直以来都是开发者处理数据库操作的重要工具。本文将围绕`hibernate-release-5.2.10`这一版本,...

Global site tag (gtag.js) - Google Analytics