看本篇文章需要你对hibernate知识有一定的了解。
我们在学每个新知识之前,都希望了解这个知识有什么用?在实际开发中有什么优势?是否便于理解和便于学习?等等问题。当了解这个知识点后,我们才用动力去学习这个新知识点。
关联关系有什么用?
hibernate 中数据是以实体(@Entity 注解修饰类)类呈现给我们的。当数据被封装到这个实体类后,我们就可以将这个实体类当作实体对象。怎么理解?
举个例子
从班级表中查出某个学生的信息并封装到一个实体类classInfo中,这时候实体类classInfo我们就可以将这个类看做是这个班级了。
那么,根据需求,我们衍生出了还有一个Student表 学生表
班级和学生之间的关联关系是一对多。
那么,如果有一天,我们需要删除这个班级。删除这个班级后,所有的学生也会随班级的消失而消失。 这时候关联关系的作用就提现出来了
Session session = sessionFactor.openSession();
Transcation trans = session.beginTranscation();
session.delete(classInfo); // 删除班级
trans.commit();
删除班级的时候 如果在实体中指定了与学生存在级联删除关系,那么在删除之前,会查询该班级下面所有的学生并删除这些学生。
级联删除关系
@OneToMany(targetEntity=Student.class,fetch=FetchType.LAZY,cascade=CascadeType.REMOVE)
@JoinColumn(name="classId")
public Set<Student> setStudent;
如果在班级实体类中存在这个关系,那么删除班级的时候也会删除该班级下的学生。
当然不只是删除,上面实例中cascade=CascadeType.REMOVE 指的是该实体与目标实体之间的级联关系是随着删除。
这是我在级联关系中用的最多的一个作用。当然还有其它的一系列级联关系,有兴趣的可以自己度妈学习。