hibernate 中对象映射关系配置

    xiaoxiao2021-03-25  67

    在hibernate 实体类之间的关系主要分为一对多、多对多、一对一 等。 一对多(对应数据库两张表):比如一个部门(Department.class)和员工(Employee.class) Department.hbm.xml配置(类中属性:departmentId、departmentName、Set employee)

    <hibernate-mapping package="com.lr.oneToMany"> <class name="Department" table="department"> <id name="departmentId"> <generator class="native"></generator> </id> <property name="departmentName" type="string" column="departmentName"></property> <set name="employee"> <key name="departmentId"></key> <one-to-many class="Employee"> </one-to-many> </set> </class> </hibernate-mapping>

    Employee.hbm.xml配置(类中属性:employId、employeeName、department)

    <hibernate-mapping package="com.lr.ontToMany"> <class name="Employee" table="employee"> <id name="employeeId"> <generator class="native"></generator> </id> <property name="employName"></property> <many-to-many name="department" class="Department" column="departmentId"> </many-to-many> </class> </hibernate-mapping>

    多对多(三张表):比如老师(Teacher.class)和学生(Student.class) Teacher.hbm.xml(类中属性:teacherId、teacherName、setstudent)

    <hibernate-mapping package="com.lr.manyToMany"> <class name="Teacher" table="teacher"> <id name="teacherId"> <generator class="native"></generator> </id> <property name="teacherName" type="string" column="teacherId"> <set name="student" class="teacher_student"> <key column="teacherId"> </key> <many-to-many class="Student" column="studentId"></many-to-many> </set> </class> </hibernate-mapping>

    Student.hbm.xml(类中属性:studentId、studentName、Set teacher)

    <hibernate-mapping package="com.lr.manyToMany"> <class name="Student" table="student"> <id name="studentId"> <generator class="native"></generator> </id> <property name="studentName" type="string" column="studentName"></property> <set name="teacher" table="teacher_student"> <key column="studentId"></key> <many-to-many class="Teacher" column="teacherId"></many-to-many> </set> </class> </hibernate-mapping>

    一对一(两张表):Person.class和IdCard.class 一对一映射分为共享主键和唯一外键方式 唯一外键方式; Person.hbm.xml(类中属性:id、name、idCard)

    <hibernate-mapping package="com.lr.oneToOne"> <class name="Person" table="t_person"> <id name="id"> <generator class="native"></generator> </id> <property name="name" > <one-to-one name="iaCard" class="IdCard" property-ref="personId"> </one-to-one> </class> </hibernate-mapping>

    IdCard.hbm.xml(类中属性 id ,number,person)

    <hibernate-mapping package="com.lr.oneToOne"> <class name="IdCard" table="t_idcard"> <id name="id"> <generator class="native"><generator> </id> <many-to-one name="person" class="Person" column="personId" unique="true"> </many-to-one> </class> </hibernate-mapping>

    共享主键方式 Person.hbm.xml

    <hibernate-mapping package="com.lr.oneToOne2"> <class name="Person" table="t_person2"> <id name="id"> <generator class="native"></generator> </id> <property name="name" > <one-to-one name="iaCard" class="IdCard" > </one-to-one> </class> </hibernate-mapping>

    IdCard.hbm.xml(类中属性 id ,number,person)

    <hibernate-mapping package="com.lr.oneToOne2"> <class name="IdCard" table="t_idcard2"> <id name="id"> <generator class="foreign"> <param name="property">person</param> </generator> </id> <one-to-one name="person" class="Person" constrained="true"> </one-to-one> </class> </hibernate-mapping>
    转载请注明原文地址: https://ju.6miu.com/read-39532.html

    最新回复(0)