`

hibernate级联查询中fetch取值的差异简观

阅读更多
做的是多对一的级联查询,
其中用到的实体类有

public class Students implements java.io.Serializable {

	// Fields

	private int id;
	private String name;
	private Integer age;

	// Constructors

	/** default constructor */
	public Students() {
	}

	/** minimal constructor */
	public Students(String name) {
		this.name = name;
	}

	/** full constructor */
	public Students(String name, Integer age) {
		this.name = name;
		this.age = age;
	}

	// Property accessors


	public String getName() {
		return this.name;
	}


	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return this.age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "id="+id+";name="+name+";age="+age;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
}


public class BookList {
	private int id;
	private Long booklist_index;
	private Students students;
	
	
	public BookList() {
		super();
		// TODO Auto-generated constructor stub
	}
	public BookList( Long booklistIndex, Students students) {
		super();
		booklist_index = booklistIndex;
		this.students = students;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}


	public Long getBooklist_index() {
		return booklist_index;
	}
	public void setBooklist_index(Long booklistIndex) {
		booklist_index = booklistIndex;
	}
	public Students getStudents() {
		return students;
	}
	public void setStudents(Students students) {
		this.students = students;
	}
	@Override
	public String toString() {
		return "id="+id+"\t bookList_index="+booklist_index+"\t students="+students;
	}
}


配置文件中,需要在多的一端配置many-to-one代替proterty元素。
eg:
 <many-to-one name="students" cascade="save-update" fetch="select"  class="org.tiger.model.Students">
       	<column name="students_id"></column>
       </many-to-one>


在实验之中,设置fetch="select"可以join的另一个值:
1.当使用hql的query接口查询的时候,每次都是发出多条语句去查询,首先是查询多的一方的一个list,然后将这个list遍历代入外键去发出另一个sql语句去查一的那方。
而如果是使用Criteria接口去查询的时候,则如果设置为join是通过一个left outer join的外连接一条语句查询出来的。



以上是:hibernate级联查询中fetch取值的差异简观实验。具体的待将来深入研究的时候发掘。
分享到:
评论

相关推荐

    hibernate 级联查询

    虽然描述部分为空,但根据给定的博文链接,我们可以推测文章可能详细解释了Hibernate中的级联查询概念,可能包括实际应用示例和源码解析。博主可能通过具体的例子展示了如何配置和使用级联查询,以及可能遇到的问题...

    Hibernate的缓存级联查询

    总的来说,尽管Hibernate的使用场景可能不像过去那么广泛,但其提供的对象关系映射、缓存机制和查询优化策略仍然是理解现代数据库操作和Java开发中的宝贵知识。了解并掌握这些技术,可以帮助开发者编写出更高效、更...

    Hibernate的级联操作(增,删,该)

    在Hibernate中,级联操作(Cascading Operations)是一种高级特性,它使得对象之间的关联关系在数据库层面得以同步更新。当我们对一个实体对象进行操作时,可以设置级联属性,让这些操作自动传播到与之相关联的其他...

    Hibernate级联操作一对多demo

    在Java持久化框架Hibernate中,级联操作是处理对象关系映射(ORM)时非常重要的一个特性。级联操作允许我们在对一个实体进行操作时,自动地影响与之相关的其他实体,无需显式地处理这些关联。在这个" Hibernate级联...

    java级联查询、分页查询

    在Hibernate中,可以使用`fetch`属性来执行预加载(Eager Loading),通过JOIN查询一次性获取关联数据。此外,还可以使用查询缓存来存储已经执行过的查询结果,避免重复执行相同的数据库查询。 总之,Java中的级联...

    hibernate级联增删改查

    首先,级联操作在Hibernate中是一种配置,用于指定当主表中的实体发生变化时,是否以及如何更新或删除关联的从表实体。级联操作可以通过在映射文件或注解中进行设置。例如,如果t_card是主表,而t_person是从表,...

    hibernate many-to-many级联保存,级联更新,级联删除

    本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、级联更新和级联删除。 一、Many-to-Many关系基础 在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门...

    hibernate 级联(cascade和inverse)一对多

    在Java的持久化框架Hibernate中,级联操作(Cascade)和反转(Inverse)是两个重要的概念,它们主要用于管理对象关系模型中的关联关系。在一对多的关系中,这些特性可以帮助简化数据操作,提高代码的可读性和维护性...

    Hibernate级联操作.docx

    在 Hibernate 中,级联操作(Cascade)和反向属性(Inverse)是管理对象关系的重要概念,特别是在处理一对多(One-to-Many)或多对一(Many-to-One)关系时。 **级联操作(Cascade)** 级联操作定义了当主对象被...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    在探讨Hibernate框架中的级联操作(cascade)与控制权反转(inverse)之前,我们需要先对Hibernate有一个基本的理解。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用提供了一种将对象模型映射到...

    3.3、Hibernate级联关系(Av839011656,P3).mp4

    3.3、Hibernate级联关系(Av839011656,P3).mp4

    Hibernate 一对多、多对一、级联、加载、反转

    在Java持久化框架Hibernate中,一对多(One-to-Many)、多对一(Many-to-One)、级联(Cascading)、加载(Loading)和反转(Inversing)是关系映射的重要概念,它们对于理解如何在数据库和对象之间有效地管理关联至...

    关于Hibernate级联删除的问题.doc

    在Java的持久化框架Hibernate中,级联操作是一种非常实用的功能,它允许我们在对一个对象进行操作时,自动处理与其关联的对象。级联删除(Cascade Delete)就是其中之一,当删除一个对象时,会根据配置自动删除与之...

    第七章_Hibernate_-_级联策略

    第七章_Hibernate_-_级联策略 第七章

    ajax+ssh实现省份城市级联查询

    在实际的项目中,开发者首先需要创建省份和城市的数据模型,并在Hibernate中配置对应的映射文件。接着,利用Spring配置文件管理Bean,包括数据库连接、SessionFactory以及业务Service。然后,使用Struts2编写Action...

    用hibernate做的省市县三级级联,

    在IT行业中,尤其是在Web开发领域,省市县三级级联是一个常见的需求,主要用于用户选择地址时提供方便的下拉菜单选择。这种功能可以提高用户体验,减少输入错误。在本项目中,开发者利用了Hibernate这一强大的对象...

    HibernateHQL级联注意事项[归类].pdf

    总结,掌握Hibernate HQL级联查询的关键在于理解数据库模型、Java对象和映射文件之间的关系,以及如何在HQL中正确表达这些关系,从而实现高效的数据库操作。在实际开发中,应合理利用级联查询的优势,同时注意其可能...

    2015最新的省市区街道级联查询

    2015年最新最全的省市区街道级联查询

    Ajax+struts+hibernate实现级联菜单

    Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单

    DB2跨库级联查询.docx

    DB2 跨库级联查询的优点是可以解决数据量很大且差异数很小的情况下,通过查询结果,然后找 excel 或 ue 上手动处理的痛苦和低效的问题,提高了数据查询的效率和accuracy。 DB2 跨库级联查询的应用场景有很多,...

Global site tag (gtag.js) - Google Analytics