论坛首页 Java企业应用论坛

我对值类型(value type)和实体类型(entity type)的理解

浏览 6931 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-01-31  
我对值类型(value type)和实体类型(entity type)的理解
例子:学生选课,学生和课程是many-to-many的关系
有三个表
create table Courses(CourseId varchar(32) not null,name varchar(32),constraint pk_Courses primary key (CourseId));

create table Students (StudentId varchar(32) not null,name varchar(32),ClassesId varchar(32) not null,constraint pk_Students  primary key (StudentId),constraint fk_Students  foreign key (ClassesId) references Classes(ClassesId));

create table Student_Course_Link(CourseId varchar(32) not null,StudentId varchar(32) not null,constraint pk_Student_Course_Link primary key (CourseId,StudentId),constraint fk_Student_Course_Link_1 foreign key (CourseId) references Courses(CourseId),constraint fk_Student_Course_Link_2 foreign key (StudentId) references Students(StudentId)) ;

在学生选课的时候课程信息是从数据库中load()出来的,那么如果要删除一个学生的信息时候实体类型会只删除学生的信息和与之关联的关系表里的连接,不会删除课程实体,而值类型是把所有与学生相关联的实体都要删除

我理解的不知道对不???
   发表时间:2004-02-01  
值类型和实体类型主要的意义在于如何理解持久化操作。
学生选课的用例中,学生和课程是多对多的关系,在学生对象中有一个属性表示课程的集合,是值类型(Collection).所以在删除学生对象时此关系是要删除的。
如果学生对象中有一个属性表示班级对象,因为班级对象是一个实体类型,所以在删除学生对象时是不会删除班级对象的。
0 请登录后投票
   发表时间:2004-02-02  
例如,我要删除一个学生的信息的时候,需要删除,class,course的信息
如果是值类型的话是删除所有与学生关联的信息
如果是实体类型的话是后台删除他们的连接,也就是删除student_courses_link表中的数据.但不删除class和course表中的数据
这样理解呢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics