时间:2021-05-20
Hibernate多对多 关联映射(many-to-many)
在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型;
Hibernate会为我们创建中间关联表,转换成两个一对多。
(1)一个最简单的例子就是学生选课的数据表了
(2)Student.java
public class Course { private Integer id; private String name; private Set<StuCourse> stuCourses; //get/set方法}(3)Student.java
public class Student { private Integer id; private String name; private Set<StuCourse> stuCourses; <span style="font-family: Arial, Helvetica, sans-serif;">//get/set方法</span>}(4)StuCourse.java学生选课表
package com.hsp.domain;public class StuCourse { private Integer id; private Student student; private Course course; private Integer grade; //get/set方法}(5)Course.hbm.xml文件
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.hsp.domain"> <class name="Course"> <id name="id" type="java.lang.Integer"> <generator class="sequence"> <param name="sequence">course_seq</param> </generator> </id> <property name="name" type="java.lang.String"> <column name="name" length="64" /> </property> <!-- 配置one-to-many 表示一门课程可以对应多个选课记录 --> <set name="stuCourses"> <key column="course_id" /> <one-to-many class="StuCourse" /> </set> </class></hibernate-mapping>(6)Student.hbm.xml文件
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.hsp.domain"> <class name="Student"> <id name="id" type="java.lang.Integer"> <generator class="sequence"> <param name="sequence">stu_seq</param> </generator> </id> <property name="name" type="java.lang.String"> <column name="name" length="64" /> </property> <!-- 这里我们配置了one-to-many 一个学生可以对应多个选课记录 --> <set name="stuCourses"> <key column="student_id" /> <!-- 这里的column是外键 --> <one-to-many class="StuCourse" /> <!-- many所对应的表 --> </set> </class></hibernate-mapping>(7)StuCourse.hbm.xml文件
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.hsp.domain"> <class name="StuCourse"> <id name="id" type="java.lang.Integer"> <generator class="sequence"> <param name="sequence">stucourse_seq</param> </generator> </id> <property name="grade" type="java.lang.Integer"> <column name="grade" length="3" /> </property> <many-to-one name="course" column="course_id" /> <many-to-one name="student" column="student_id" /> </class></hibernate-mapping>(8)hibernate.cfg.xml文件
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration> <session-factory> <property name="connection.username">root</property> <property name="connection.url"> jdbc:oracle:thin:@127.0.0.1:1521:OracleDB </property> <property name="dialect"> org.hibernate.dialect.Oracle9Dialect </property> <property name="connection.password">root</property> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <property name="show_sql">true</property> <!-- 配置让hibernate自动创建关系模型(表) --> <property name="hbm2ddl.auto">update</property> <mapping resource="com/hsp/domain/Course.hbm.xml" /> <mapping resource="com/hsp/domain/StuCourse.hbm.xml" /> <mapping resource="com/hsp/domain/Student.hbm.xml" /> </session-factory></hibernate-configuration>总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Mybatis表现关联关系比hibernate简单,没有分那么细致one-to-many、many-to-one、one-to-one。而是只有两种associ
写在开头使用jhipster声明的OneToMany在One的一方DTO中是没有与Many的DTO的映射关系的,为了在One的一方DTO中使用Many的DTO,
多对一(Many-to-One)映射多对一(many-to-one)关联是最常见的关联关系,其中一个对象可以与多个对象相关联。例如,一个相同的地址对象可以与多个
1.one-to-many一对多关系的映射配置(在一的一方实体映射文件中配置)一对多|多对一关系中,放置sql语句冗余.一般选择一的一方放弃维护,inverse
on_delete属性针对外键ForeignKey一、django3.0官方文档介绍:Many-to-onerelationships多对一关系Todefine