一 cascade属性
当设置了cascade属性不为none时,Hibernate会自动持久化所关联的对象。
cascade属性的设置会带来性能上的变动,需谨慎设置。
二 配置级联属性
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<hibernate-mapping>
<class name="com.imooc.entity.Grade" table="grade">
<id name="gid" column="gid" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="gname" type="java.lang.String">
<column name="gname" length="20" not-null="true"></column>
</property>
<property name="gdesc">
<column name="gdesc"></column>
</property>
<!-- 配置一对多关联关系 ,设置inverse属性未true,由多方来维护关联关系-->
<!--当进行保存和更新时,级联操作关联的对象-->
<set name="students" table="student" inverse="true" cascade="save-update">
<key column="gid"></key>
<one-to-many class="com.imooc.entity.Student"/>
</set>
</class>
</hibernate-mapping>
三 测试代码
package com.imooc.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.imooc.entity.Grade;
import com.imooc.entity.Student;
import com.imooc.util.HibernateUtil;
/*
* 单向多对一(学生--->班级)
*/
public class Test02 {
public static void main(String[] args) {
save();
}
//保存
public static void save(){
Grade g=new Grade("Java一班","Java软件开发一班");
Student stu1=new Student("慕女神", "女");
Student stu2=new Student("小慕慕", "男");
//设置关联关系
g.getStudents().add(stu1);
g.getStudents().add(stu2);
stu1.setGrade(g);
stu2.setGrade(g);
Session session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
session.save(g);//级联操作,保存了班级,会级联保存学生,不需要下面两句话
// session.save(stu1);
// session.save(stu2);
tx.commit();
HibernateUtil.closeSession(session);
}
}
四 测试结果
Hibernate: select max(gid) from grade
Hibernate: select max(sid) from student
Hibernate: insert into grade (gname, gdesc, gid) values (?, ?, ?)
Hibernate: insert into student (sname, sex, gid, sid) values (?, ?, ?, ?)
Hibernate: insert into student (sname, sex, gid, sid) values (?, ?, ?, ?)
相关推荐
描述提到“使用cascade和inverse优化区和街道关联关系”,这意味着我们将深入理解Hibernate的cascade和inverse属性,以及它们在双向一对多关联关系中的应用。 Hibernate是Java领域中广泛使用的对象关系映射(ORM)...
在这个场景中,“hibernate使用主键关联的一对一关系”指的是通过共享主键来实现两个实体类之间的这种一对一绑定。下面我们将深入探讨这一主题。 首先,我们需要理解一对一关系的概念。在数据库中,一对一关系意味...
1. **级联属性设置**:在Hibernate的映射文件或使用注解时,我们需要在关联的字段或属性上设置`cascade`属性。例如,如果我们有一个`User`类和一个`Address`类,`User`有一个`List<Address>`的属性,我们可以在`@...
12. **实战案例**:通过实际项目案例展示如何在Web应用中集成Hibernate,如Spring Boot项目中的配置和使用。 总之,《Hibernate技术手册》是一本全面介绍Hibernate框架的实用资源,无论你是初学者还是经验丰富的...
通过学习《Hibernate in Action》中文版,读者可以深入了解Hibernate的原理和使用方法,从而在项目开发中更好地利用ORM技术,提升代码质量和效率。书中详细实例和实战指导将帮助初学者快速上手,进阶者深入研究。
总的来说,Hibernate入门需要理解ORM思想,掌握实体类、Session和SessionFactory的使用,学习HQL和Criteria API的查询方法,了解级联操作和事务管理,并熟悉性能优化手段。初学者可以通过阅读官方文档、实战项目练习...
1. 级联操作:通过在实体关系映射中设置cascade属性,实现对关联对象的级联操作。 2. 缓存机制:包括一级缓存(Session)和二级缓存(SessionFactory),提高性能,减少数据库访问。 七、查询优化 1. 使用HQL或...
- **主要内容**:涉及Hibernate框架的使用方法、实践经验以及作者在Hibernate官方论坛上的交流心得。 - **定位区别**:不同于Hibernate官方参考文档(Hibernate Reference),本文档旨在为开发者提供一个学习和掌握...
- 一对多(OneToMany):使用@OneToMany注解,可设置fetch模式和cascade属性。 - 多对一(ManyToOne):使用@ManyToOne注解,可指定关联的字段。 - 多对多(ManyToMany):使用@ManyToMany注解,通常需要一个中间...
通过上述知识点,开发者可以熟练掌握Hibernate的基本用法,高效地进行数据库操作。在实际项目中,结合Spring等框架,可以构建出稳定、高效的Java应用。为了更深入理解,建议阅读相关文档、博客和实战项目,不断实践...
- 当使用`Session.load()`或`Session.get()`方法获取对象时,如果关联对象配置为懒加载(LAZY),Hibernate会在需要时才执行查询。这涉及到代理对象的概念,实际上是返回了一个代理实例,只有在访问关联属性时才会...
3. **数据操作**:在业务逻辑中,你可以创建`Employee`对象并设置其`Department`属性,然后通过SessionFactory的`save()`或`update()`方法保存或更新数据。Hibernate会自动处理外键的设置。 4. **查询**:通过...
在“hibernate1013”项目中,你可以找到一个简单的例子,展示如何在Main方法中配置和使用一对多关系,以及进行增删改测试。通过运行这个示例,你可以更好地理解Hibernate一对多关系配置、反转和级联操作的实际应用。...
Hibernate提供了基于Annotation的事务管理,可以在实体类的方法上使用@Transactional注解,让Spring容器自动管理事务的开始、提交和回滚。同时,也可以通过Session的beginTransaction()、commit()和rollback()方法...
#### 二、Hibernate入门实战 - **第一个Hibernate程序**: - 创建一个简单的Java类,定义实体模型。 - 使用Hibernate提供的API创建SessionFactory和Session。 - 通过Session执行CRUD操作。 - **配置文件**: - ...
通过本教程的学习,读者能够深入了解Hibernate的工作原理和使用方法,掌握其核心特性和高级功能,从而能够在实际项目中有效地利用Hibernate解决复杂的数据持久化问题。此外,本教程还提供了丰富的实战案例和常见问题...
《Hibernate实战作业详解》 在Java开发领域,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本篇文章将深入探讨在“Hibernate_Homeworks”项目中的核心知识点,帮助开发者掌握如何利用...
8. **Hibernate**:ORM(对象关系映射)原理,Hibernate的开发步骤,主要接口(尤其是Session),普通属性和关联关系映射,Native SQL,inverse lazy cascade,继承关系映射,HQL,性能优化(一级缓存,二级缓存,...
在Spring Boot中,我们可以使用JPA(Java Persistence API)和Hibernate作为ORM(对象关系映射)工具来创建对应的实体类。 ```java // User.java @Entity public class User { @Id @GeneratedValue(strategy = ...