做的是多对一的级联查询,
其中用到的实体类有
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的使用场景可能不像过去那么广泛,但其提供的对象关系映射、缓存机制和查询优化策略仍然是理解现代数据库操作和Java开发中的宝贵知识。了解并掌握这些技术,可以帮助开发者编写出更高效、更...
在Hibernate中,级联操作(Cascading Operations)是一种高级特性,它使得对象之间的关联关系在数据库层面得以同步更新。当我们对一个实体对象进行操作时,可以设置级联属性,让这些操作自动传播到与之相关联的其他...
在Java持久化框架Hibernate中,级联操作是处理对象关系映射(ORM)时非常重要的一个特性。级联操作允许我们在对一个实体进行操作时,自动地影响与之相关的其他实体,无需显式地处理这些关联。在这个" Hibernate级联...
在Hibernate中,可以使用`fetch`属性来执行预加载(Eager Loading),通过JOIN查询一次性获取关联数据。此外,还可以使用查询缓存来存储已经执行过的查询结果,避免重复执行相同的数据库查询。 总之,Java中的级联...
首先,级联操作在Hibernate中是一种配置,用于指定当主表中的实体发生变化时,是否以及如何更新或删除关联的从表实体。级联操作可以通过在映射文件或注解中进行设置。例如,如果t_card是主表,而t_person是从表,...
本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、级联更新和级联删除。 一、Many-to-Many关系基础 在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门...
在Java的持久化框架Hibernate中,级联操作(Cascade)和反转(Inverse)是两个重要的概念,它们主要用于管理对象关系模型中的关联关系。在一对多的关系中,这些特性可以帮助简化数据操作,提高代码的可读性和维护性...
在 Hibernate 中,级联操作(Cascade)和反向属性(Inverse)是管理对象关系的重要概念,特别是在处理一对多(One-to-Many)或多对一(Many-to-One)关系时。 **级联操作(Cascade)** 级联操作定义了当主对象被...
在探讨Hibernate框架中的级联操作(cascade)与控制权反转(inverse)之前,我们需要先对Hibernate有一个基本的理解。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用提供了一种将对象模型映射到...
3.3、Hibernate级联关系(Av839011656,P3).mp4
在Java持久化框架Hibernate中,一对多(One-to-Many)、多对一(Many-to-One)、级联(Cascading)、加载(Loading)和反转(Inversing)是关系映射的重要概念,它们对于理解如何在数据库和对象之间有效地管理关联至...
在Java的持久化框架Hibernate中,级联操作是一种非常实用的功能,它允许我们在对一个对象进行操作时,自动处理与其关联的对象。级联删除(Cascade Delete)就是其中之一,当删除一个对象时,会根据配置自动删除与之...
第七章_Hibernate_-_级联策略 第七章
在实际的项目中,开发者首先需要创建省份和城市的数据模型,并在Hibernate中配置对应的映射文件。接着,利用Spring配置文件管理Bean,包括数据库连接、SessionFactory以及业务Service。然后,使用Struts2编写Action...
在IT行业中,尤其是在Web开发领域,省市县三级级联是一个常见的需求,主要用于用户选择地址时提供方便的下拉菜单选择。这种功能可以提高用户体验,减少输入错误。在本项目中,开发者利用了Hibernate这一强大的对象...
总结,掌握Hibernate HQL级联查询的关键在于理解数据库模型、Java对象和映射文件之间的关系,以及如何在HQL中正确表达这些关系,从而实现高效的数据库操作。在实际开发中,应合理利用级联查询的优势,同时注意其可能...
2015年最新最全的省市区街道级联查询
Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单
在IT领域,动态实现下拉列表框的三级级联查询是一项常见的前端交互功能,它能够为用户提供更加便捷的导航和筛选体验。在这个场景中,我们使用JSP(JavaServer Pages)脚本语言来实现这一功能。JSP是Java平台上的...