`

多对多双向关联

阅读更多

老师和学生:

 

Annotation配置:

package com.zchen.hibernate.manytmany;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name="T_TEACHER")
public class Teacher {
	private int id;
	private String name;
	
	private Set<Student> students = new HashSet<Student>();
	
	@ManyToMany
	@JoinTable(name="T_S",
			joinColumns={@JoinColumn(name="TEACHER_ID")},
			inverseJoinColumns={@JoinColumn(name="STUDENT_ID")}
	)
	public Set<Student> getStudents() {
		return students;
	}
	public void setStudents(Set<Student> students) {
		this.students = students;
	}
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	

}

 

package com.zchen.hibernate.manytmany;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name="T_STUDENT")
public class Student {
	private int id;
	private String name;
	
	private Set<Teacher> teachers = new HashSet<Teacher>();
	
	@ManyToMany(mappedBy="students")
	public Set<Teacher> getTeachers() {
		return teachers;
	}
	public void setTeachers(Set<Teacher> teachers) {
		this.teachers = teachers;
	}
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	

}

 

Xml配置:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zchen.hibernate.manytmany">

    <class name="Teacher" table="T_TEACHER">
        <id name="id" column="ID">
            <generator class="native">
            </generator>
        </id>
        <property name="name" column="NAME"/>
        <set name="Students" table="T_S">
        	<key column="TEACHER_ID"></key>
        	<many-to-many class="com.zchen.hibernate.manytmany.Student" column="STUDENT_ID"/>
        </set>
    </class>

</hibernate-mapping>

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zchen.hibernate.manytmany">

    <class name="Student" table="T_STUDENT">
        <id name="id" column="ID">
            <generator class="native">
            </generator>
        </id>
        <property name="name" column="NAME"/>
      
	    <set name="teachers" table="T_S">
        	<key column="STUDENT_ID"></key>
        	<many-to-many class="com.zchen.hibernate.manytmany.Student" column="TEACHER_ID"/>
        </set> 
    </class>

</hibernate-mapping>

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="">
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="connection.url">jdbc:mysql:///db_czbk_hibernate</property>
  <property name="connection.username">root</property>
  <property name="connection.password">1234</property>
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hbm2ddl.auto">create</property>
  <property name="current_session_context_class">thread</property>
  <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
  <property name="show_sql">true</property>
  <!-- <mapping class="com.zchen.hibernate.manytmany.Teacher"/>
  <mapping class="com.zchen.hibernate.manytmany.Student"/>  -->
  
  <mapping resource="com/zchen/hibernate/manytmany/Teacher.hbm.xml" />
  <mapping resource="com/zchen/hibernate/manytmany/Student.hbm.xml" />
  
 </session-factory>
</hibernate-configuration>

 

package com.zchen.hibernate;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;

public class Snippet {
	@Test
	public void testSchemaExport(){
			new SchemaExport(new AnnotationConfiguration().configure()).create(true, true);
	}
}

 

分享到:
评论

相关推荐

    hibernate多对多双向关联

    多对多双向关联 &lt;br&gt;注意映射规则: &lt;set name="roles" table="t_user_role"&gt;&lt;br&gt; &lt;key column="userid"/&gt;&lt;br&gt; &lt;many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/&gt;&lt;br&gt; &lt;/set&gt;&lt;br&gt; table...

    13_jpa多对多双向关联实体定义与注解

    本篇将详细讲解JPA中的一个关键概念——多对多双向关联,并通过实体定义与注解设置来深入理解这一特性。"13_传智播客JPA详解"系列教程涵盖了JPA的诸多方面,而"13_传智播客JPA详解_JPA中的多对多双向关联实体定义与...

    JPA中的多对多双向关联实体定义与注解设置

    总结来说,JPA中的多对多双向关联实体定义涉及`@ManyToMany`、`@JoinTable`以及`mappedBy`等注解的使用。正确配置这些注解可以让我们轻松地管理实体之间的复杂关系,并简化数据库操作。在实际项目中,理解并熟练掌握...

    14_传智播客JPA详解_JPA中的多对多双向关联的各项关系操作

    本教程将深入探讨JPA中多对多双向关联的各个方面及其操作。 在数据库中,多对多关联意味着一个实体可以与多个其他实体相关联,反之亦然。例如,学生和课程之间的关系就是一个典型的多对多关系:一个学生可以选修多...

    13_JPA详解_JPA中的多对多双向关联实体定义与注解设置.zip

    本资料“13_JPA详解_JPA中的多对多双向关联实体定义与注解设置”专注于讲解JPA如何处理多对多双向关联关系,这是数据库设计中常见的一种复杂关联类型。下面我们将详细探讨这一主题。 首先,我们需要理解多对多关联...

    Hibernate教程14_关系映射之多对多双向关联

    本教程将重点讲解如何在Hibernate中实现多对多双向关联,这是数据库设计中常见的一种关系类型,它允许一个实体实例与多个其他实体实例相互关联。 在数据库设计中,多对多关系意味着一个表的记录可以与另一个表的多...

    14_JPA详解_JPA中的多对多双向关联的各项关系操作.zip

    在本教程中,我们将深入探讨JPA中的多对多双向关联及其各项操作。 ### 1. 多对多关联基础 在关系型数据库中,多对多关联通常通过中间表来实现,而JPA提供了一种声明式的方式来处理这种关联。在双向关联中,两个...

    Hibernate多对多双向关联(annotation/xml)

    本主题将深入探讨使用Hibernate进行多对多双向关联的实现,既可以通过注解(Annotation)方式,也可以通过XML配置文件来完成。 首先,我们来看多对多关联的基本概念。在数据库设计中,当两个实体之间存在多个实例...

    Hibernate ORM - 多对多双向连接表关联关系

    在Hibernate中,实现多对多双向关联主要涉及以下步骤: 1. **配置实体类**:首先,你需要为每个参与关联的实体定义一个Java类,并添加相应的属性。例如,对于“学生-课程”关系,可以有`Student`和`Course`类,它们...

    JPA详解视频教程 第13讲 JPA中的多对多双向关联实体定义与注解设置.avi

    JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第13讲 JPA中的多对多双向关联实体定义与注解设置.avi

    JPA详解视频教程 第14讲 JPA中的多对多双向关联的各项关系操作.avi

    JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第14讲 JPA中的多对多双向关联的各项关系操作.avi

    Hibernate ORM - 一对多双向关联关系

    标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...

    hibernate一对多,多对一,一对多双向关联

    “Hibernate 一对多,多对一,一对多双向关联”是指在Java持久化框架Hibernate中,实体间常见的三种关联关系。在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户...

Global site tag (gtag.js) - Google Analytics