`
cakin24
  • 浏览: 1396331 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Hibernate的cascade属性的用法实战

阅读更多
一 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 (?, ?, ?, ?)

 



 
  • 大小: 19.5 KB
  • 大小: 131.9 KB
1
0
分享到:
评论

相关推荐

    Hibernate开发租房系统2 源码

    描述提到“使用cascade和inverse优化区和街道关联关系”,这意味着我们将深入理解Hibernate的cascade和inverse属性,以及它们在双向一对多关联关系中的应用。 Hibernate是Java领域中广泛使用的对象关系映射(ORM)...

    hibernate使用主键关联的一对一关系

    在这个场景中,“hibernate使用主键关联的一对一关系”指的是通过共享主键来实现两个实体类之间的这种一对一绑定。下面我们将深入探讨这一主题。 首先,我们需要理解一对一关系的概念。在数据库中,一对一关系意味...

    hibernate_second2项目源码

    1. **级联属性设置**:在Hibernate的映射文件或使用注解时,我们需要在关联的字段或属性上设置`cascade`属性。例如,如果我们有一个`User`类和一个`Address`类,`User`有一个`List&lt;Address&gt;`的属性,我们可以在`@...

    Hibernate技术手册

    12. **实战案例**:通过实际项目案例展示如何在Web应用中集成Hibernate,如Spring Boot项目中的配置和使用。 总之,《Hibernate技术手册》是一本全面介绍Hibernate框架的实用资源,无论你是初学者还是经验丰富的...

    Hibernate in action 中文

    通过学习《Hibernate in Action》中文版,读者可以深入了解Hibernate的原理和使用方法,从而在项目开发中更好地利用ORM技术,提升代码质量和效率。书中详细实例和实战指导将帮助初学者快速上手,进阶者深入研究。

    hibernate入门

    总的来说,Hibernate入门需要理解ORM思想,掌握实体类、Session和SessionFactory的使用,学习HQL和Criteria API的查询方法,了解级联操作和事务管理,并熟悉性能优化手段。初学者可以通过阅读官方文档、实战项目练习...

    达内2012三大框架之hibernate附pdf和代码(最新版pdf)

    1. 级联操作:通过在实体关系映射中设置cascade属性,实现对关联对象的级联操作。 2. 缓存机制:包括一级缓存(Session)和二级缓存(SessionFactory),提高性能,减少数据库访问。 七、查询优化 1. 使用HQL或...

    夏昕-Hibernate+开发指南.pdf

    - **主要内容**:涉及Hibernate框架的使用方法、实践经验以及作者在Hibernate官方论坛上的交流心得。 - **定位区别**:不同于Hibernate官方参考文档(Hibernate Reference),本文档旨在为开发者提供一个学习和掌握...

    hibernate学习笔记

    - 一对多(OneToMany):使用@OneToMany注解,可设置fetch模式和cascade属性。 - 多对一(ManyToOne):使用@ManyToOne注解,可指定关联的字段。 - 多对多(ManyToMany):使用@ManyToMany注解,通常需要一个中间...

    HIbernate基础知识积累

    通过上述知识点,开发者可以熟练掌握Hibernate的基本用法,高效地进行数据库操作。在实际项目中,结合Spring等框架,可以构建出稳定、高效的Java应用。为了更深入理解,建议阅读相关文档、博客和实战项目,不断实践...

    Hibernate一对一关系源码

    - 当使用`Session.load()`或`Session.get()`方法获取对象时,如果关联对象配置为懒加载(LAZY),Hibernate会在需要时才执行查询。这涉及到代理对象的概念,实际上是返回了一个代理实例,只有在访问关联属性时才会...

    Hibernate 多对一连接表单向关联

    3. **数据操作**:在业务逻辑中,你可以创建`Employee`对象并设置其`Department`属性,然后通过SessionFactory的`save()`或`update()`方法保存或更新数据。Hibernate会自动处理外键的设置。 4. **查询**:通过...

    hibernate入门学习

    在“hibernate1013”项目中,你可以找到一个简单的例子,展示如何在Main方法中配置和使用一对多关系,以及进行增删改测试。通过运行这个示例,你可以更好地理解Hibernate一对多关系配置、反转和级联操作的实际应用。...

    hibernate下的mysql方面源代码.zip

    Hibernate提供了基于Annotation的事务管理,可以在实体类的方法上使用@Transactional注解,让Spring容器自动管理事务的开始、提交和回滚。同时,也可以通过Session的beginTransaction()、commit()和rollback()方法...

    Hibernate 入门

    #### 二、Hibernate入门实战 - **第一个Hibernate程序**: - 创建一个简单的Java类,定义实体模型。 - 使用Hibernate提供的API创建SessionFactory和Session。 - 通过Session执行CRUD操作。 - **配置文件**: - ...

    Hibernate中文教程

    通过本教程的学习,读者能够深入了解Hibernate的工作原理和使用方法,掌握其核心特性和高级功能,从而能够在实际项目中有效地利用Hibernate解决复杂的数据持久化问题。此外,本教程还提供了丰富的实战案例和常见问题...

    Hibernate_Homeworks

    《Hibernate实战作业详解》 在Java开发领域,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本篇文章将深入探讨在“Hibernate_Homeworks”项目中的核心知识点,帮助开发者掌握如何利用...

    J2EE学习路线及重要知识点.pdf

    8. **Hibernate**:ORM(对象关系映射)原理,Hibernate的开发步骤,主要接口(尤其是Session),普通属性和关联关系映射,Native SQL,inverse lazy cascade,继承关系映射,HQL,性能优化(一级缓存,二级缓存,...

    springboot 两表增删改查 用户表和角色表

    在Spring Boot中,我们可以使用JPA(Java Persistence API)和Hibernate作为ORM(对象关系映射)工具来创建对应的实体类。 ```java // User.java @Entity public class User { @Id @GeneratedValue(strategy = ...

Global site tag (gtag.js) - Google Analytics