根据类分层结构设计Hibernate Mapping与数据库表结构

    技术2022-05-11  64

    首先,有三个实体对象User,Student, Teacher

    其中三者共同的属性是name,password,fullname,均定义在User中,Student和Teacher继承User

    用每个类分层的方式进行mapping映射,只需要用到一个表userinfo就可以描述以上关系但需要增加一个user_type字段

     

    < class  table ="userinfo"  name ="cn.hxex.exam.model.User" >    < id  name ="id"  column ="ID" >        < generator  class ="uuid.hex" />     </ id >      < property  name ="name"  column ="NAME" />      < property  name ="password"  column ="PASSWORD" />      < property  name ="fullname"  column ="FULLNAME" />            < subclass  name ="cn.hxex.exam.model.Student"  discriminator-value ="student" >            < many-to-one  column ="CLASS_ID"  cascade ="save-update"  name ="classes" />       < subclass >        < subclass  name ="cn.hxex.exam.model.Teacher“ discriminator-value=" teacher" >            < set  cascade ="all"  lazy ="true"  table ="TEACHER_CLASS"  name ="classes" >               < key  column ="TEACHER_ID" />                < many-to-many  class ="cn.hxex.exam.model.Classes"  column ="CLASS_ID" />             </ set >         < subclass > </ class >

     当执行from User 时候,只需要执行select * from userinfo ,可以减少sql执行次数

     当执行from Student ,hibernate会自动执行select * from userinfo where user_type="student";

    同样,在进行对象持久话操作时,也会根据对象类型自动设置user_type字段值


    最新回复(0)