好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Hibernate实现many-to-many的映射关系

hibernate 多对多 关联 映射 (many-to-many)

在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型;

hibernate会为我们创建中间关联表,转换成两个一对多。

(1)一个最简单的例子就是学生选课的数据表了

(2)student.java

?

1

2

3

4

5

6

public class course {

  private integer id;

  private string name;

  private set<stucourse> stucourses;

  //get/set方法

}

(3)student.java

?

1

2

3

4

5

6

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学生选课表

?

1

2

3

4

5

6

7

8

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文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?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文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?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文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?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文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<?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>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/huanglong1218/article/details/52313047

查看更多关于Hibernate实现many-to-many的映射关系的详细内容...

  阅读:11次