Hibernate_5_老师与学生实例_多对多关联关系

SessionFactoryTools类与上例相同。

1)学生类:

public class Student {
	private Integer id;
	private String name;
	private Set<Teacher> teachers = new HashSet<Teacher>();

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Set<Teacher> getTeachers() {
		return teachers;
	}

	public void setTeachers(Set<Teacher> teachers) {
		this.teachers = teachers;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + "]";
	}
}

2)老师类:

public class Teacher {
	private Integer id;
	private String name;
	private Set<Student> students = new HashSet<Student>();

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Set<Student> getStudents() {
		return students;
	}

	public void setStudents(Set<Student> students) {
		this.students = students;
	}

	@Override
	public String toString() {
		return "Teacher [id=" + id + ", name=" + name + "]";
	}

}

3)Student.hbm.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="map_2">
	<!--类名:Student 
		类对应的表名:students 
		对应的中间表名:teacher_student
		维护关系为:inverse=false,本类维护
		外键名称:studentId
		多对多对应类:Teacher
		多对多对应类在中间表中的外键:teacherId
	-->
	<class name="Student" table="students">

		<id name="id" type="int" column="id">
			<generator class="native" />
		</id>
		<property name="name" type="string" column="name" length="20" />

		<set name="teachers" table="teacher_student" inverse="false">
			<key column="studentId"></key>
			<many-to-many class="Teacher" column="teacherId"/>
		</set>

	</class>
</hibernate-mapping>

4)Teacher.hbm.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="map_2">
	<!--类名:Teacher 
		类对应的表名:teachers
		维护关系为:inverse=true,本类不维护
		对应列的名称:teacherId
		中间类的表名:teacher_student
		多对多对应类的表名:Student
		多对多对应类在中间表中的外键:studentId
	-->
	<class name="Teacher" table="teachers">

		<id name="id" type="int" column="id">
			<generator class="native" />
		</id>
		<property name="name" type="string" column="name" length="20" />
		
		<set name="students" table="teacher_student" inverse="true">
			<key column= "teacherId"></key>
			<many-to-many class="Student" column="studentId" />
		</set>

	</class>
</hibernate-mapping>

5)主文件的配置:

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory name="foo">

		<!-- 配置数据库信息 -->
	   <property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
    </property>
		<property name="connection.url">
jdbc:mysql:///hibernate0
</property>
		<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>

		<!-- 其他配置 -->
		<property name="hibernate.show_sql">false</property>
		<property name="hibernate.format_sql">false</property>
		<property name="hbm2ddl.auto">update</property>

		<!-- 映射文件配置 -->
		<mapping resource="map_2/Student.hbm.xml" />
		<mapping resource="map_2/Teacher.hbm.xml" />

	</session-factory>
</hibernate-configuration>










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值