hibernate-----many-to-many

Java代码 复制代码
  1. CREATE DATABASE `manytomany`   
  2. CHARACTER SET 'utf8';   
  3.   
  4. USE `manytomany`;   
  5.   
  6. DROP TABLE IF EXISTS `student`;   
  7. create table student(   
  8.     sid int auto_increment primary key,   
  9.     name varchar(10) not null  
  10. )ENGINE=InnoDB DEFAULT CHARSET=utf8;   
  11. DROP TABLE IF EXISTS `teacher`;   
  12. create table teacher(   
  13.     tid int auto_increment primary key,   
  14.     name varchar(10) not null  
  15. )ENGINE=InnoDB DEFAULT CHARSET=utf8;   
  16. DROP TABLE IF EXISTS `st`;   
  17. create table st(   
  18.     sid int not null,   
  19.     tid int not null  
  20. )ENGINE=InnoDB DEFAULT CHARSET=utf8;  
CREATE DATABASE `manytomany`
CHARACTER SET 'utf8';

USE `manytomany`;

DROP TABLE IF EXISTS `student`;
create table student(
	sid int auto_increment primary key,
	name varchar(10) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `teacher`;
create table teacher(
	tid int auto_increment primary key,
	name varchar(10) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `st`;
create table st(
	sid int not null,
	tid int not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

Teacher.java
Java代码 复制代码
  1. package com.test.domain;   
  2.   
  3. import java.util.HashSet;   
  4. import java.util.Set;   
  5.   
  6. public class Teacher implements java.io.Serializable {   
  7.   
  8.     private Integer tid;   
  9.   
  10.     private String name;   
  11.        
  12.     private Set students = new HashSet();   
  13.        
  14.     public Teacher() {   
  15.     }   
  16.   
  17.     public Teacher(String name) {   
  18.         this.name = name;   
  19.     }   
  20.   
  21.     public Integer getTid() {   
  22.         return this.tid;   
  23.     }   
  24.   
  25.     public void setTid(Integer tid) {   
  26.         this.tid = tid;   
  27.     }   
  28.   
  29.     public String getName() {   
  30.         return this.name;   
  31.     }   
  32.   
  33.     public void setName(String name) {   
  34.         this.name = name;   
  35.     }   
  36.   
  37.     public Set getStudents() {   
  38.         return students;   
  39.     }   
  40.   
  41.     public void setStudents(Set students) {   
  42.         this.students = students;   
  43.     }   
  44.        
  45.        
  46.   
  47. }  
package com.test.domain;

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

public class Teacher implements java.io.Serializable {

	private Integer tid;

	private String name;
	
	private Set students = new HashSet();
	
	public Teacher() {
	}

	public Teacher(String name) {
		this.name = name;
	}

	public Integer getTid() {
		return this.tid;
	}

	public void setTid(Integer tid) {
		this.tid = tid;
	}

	public String getName() {
		return this.name;
	}

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

	public Set getStudents() {
		return students;
	}

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

}

Student.java:
Java代码 复制代码
  1. package com.test.domain;   
  2.   
  3. import java.util.HashSet;   
  4. import java.util.Set;   
  5.   
  6. public class Student implements java.io.Serializable {   
  7.   
  8.     private Integer sid;   
  9.   
  10.     private String name;   
  11.        
  12.     private Set teachers = new HashSet();   
  13.   
  14.     public Student() {   
  15.     }   
  16.   
  17.     public Student(String name) {   
  18.         this.name = name;   
  19.     }   
  20.   
  21.     public Integer getSid() {   
  22.         return this.sid;   
  23.     }   
  24.   
  25.     public void setSid(Integer sid) {   
  26.         this.sid = sid;   
  27.     }   
  28.   
  29.     public String getName() {   
  30.         return this.name;   
  31.     }   
  32.   
  33.     public void setName(String name) {   
  34.         this.name = name;   
  35.     }   
  36.   
  37.     public Set getTeachers() {   
  38.         return teachers;   
  39.     }   
  40.   
  41.     public void setTeachers(Set teachers) {   
  42.         this.teachers = teachers;   
  43.     }   
  44.   
  45.        
  46. }  
package com.test.domain;

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

public class Student implements java.io.Serializable {

	private Integer sid;

	private String name;
	
	private Set teachers = new HashSet();

	public Student() {
	}

	public Student(String name) {
		this.name = name;
	}

	public Integer getSid() {
		return this.sid;
	}

	public void setSid(Integer sid) {
		this.sid = sid;
	}

	public String getName() {
		return this.name;
	}

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

	public Set getTeachers() {
		return teachers;
	}

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

	
}


Teacher.hbm.xml
Java代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
  4.   
  5. <hibernate-mapping>   
  6.     <class name="com.test.domain.Teacher" table="teacher" catalog="manytomany">   
  7.         <id name="tid" type="java.lang.Integer">   
  8.             <column name="tid" />   
  9.             <generator class="native" />   
  10.         </id>   
  11.         <property name="name" type="java.lang.String">   
  12.             <column name="name" length="10" not-null="true" />   
  13.         </property>   
  14.         <!--inverse="false": 由teacher操作student -->   
  15.         <set name="students" table="st" cascade="save-update" inverse="false">   
  16.             <key column="tid"></key>   
  17.             <many-to-many class="com.test.domain.Student" column="sid">   
  18.             </many-to-many>   
  19.         </set>   
  20.     </class>   
  21. </hibernate-mapping>  
<?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>
    <class name="com.test.domain.Teacher" table="teacher" catalog="manytomany">
        <id name="tid" type="java.lang.Integer">
            <column name="tid" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="10" not-null="true" />
        </property>
        <!--inverse="false": 由teacher操作student -->
        <set name="students" table="st" cascade="save-update" inverse="false">
        	<key column="tid"></key>
        	<many-to-many class="com.test.domain.Student" column="sid">
        	</many-to-many>
        </set>
    </class>
</hibernate-mapping>



Student.hbm.xml
Java代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
  4. <hibernate-mapping>   
  5.     <class name="com.test.domain.Student" table="student" catalog="manytomany">   
  6.         <id name="sid" type="java.lang.Integer">   
  7.             <column name="sid" />   
  8.             <generator class="native" />   
  9.         </id>   
  10.         <property name="name" type="java.lang.String">   
  11.             <column name="name" length="10" not-null="true" />   
  12.         </property>   
  13.         <!--inverse="true": 由teacher操作student -->   
  14.         <set name="teachers" table="st" cascade="save-update" inverse="true">   
  15.             <key column="sid"></key>   
  16.             <many-to-many class="com.test.domain.Teacher" column="tid">   
  17.             </many-to-many>   
  18.         </set>   
  19.     </class>   
  20. </hibernate-mapping>  
<?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>
    <class name="com.test.domain.Student" table="student" catalog="manytomany">
        <id name="sid" type="java.lang.Integer">
            <column name="sid" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="10" not-null="true" />
        </property>
        <!--inverse="true": 由teacher操作student -->
        <set name="teachers" table="st" cascade="save-update" inverse="true">
        	<key column="sid"></key>
        	<many-to-many class="com.test.domain.Teacher" column="tid">
        	</many-to-many>
        </set>
    </class>
</hibernate-mapping>



测试类,Test.java
Java代码 复制代码
  1. package com.test.dao;   
  2.   
  3. import org.hibernate.Session;   
  4.   
  5. import com.test.domain.Student;   
  6. import com.test.domain.Teacher;   
  7.   
  8. public class Test {   
  9.   
  10.     public static void main(String[] args) {   
  11.         Session session = HibernateSessionFactory.getSession();   
  12.            
  13.         Teacher teacher1 = new Teacher();   
  14.         teacher1.setName("teacher1");   
  15.            
  16.         Teacher teacher2 = new Teacher();   
  17.         teacher2.setName("teacher2");   
  18.            
  19.         Teacher teacher3 = new Teacher();   
  20.         teacher3.setName("teacher3");   
  21.            
  22.         Student student1 = new Student();   
  23.         student1.setName("student1");   
  24.            
  25.         Student student2 = new Student();   
  26.         student2.setName("student2");   
  27.         //student1.getTeachers().add(teacher1);student1.getTeachers().add(teacher2);student2.getTeachers().add(teacher1);这几句代码可以不要,因为Teacher掌握主动权。所以下面几句代码给注释掉了   
  28. //      //学生一有2个老师   
  29. //      student1.getTeachers().add(teacher1);   
  30. //      student1.getTeachers().add(teacher2);   
  31. //         
  32. //      //学生二有一个老师   
  33. //      student2.getTeachers().add(teacher1);   
  34.            
  35.         //因为老师是inverse="false" ,老师掌握主动权   
  36.         //第一个老师有2个学生   
  37.         teacher1.getStudents().add(student1);   
  38.         teacher1.getStudents().add(student2);   
  39.            
  40.         //第二个老师有一个学生   
  41.         teacher2.getStudents().add(student1);   
  42.            
  43.         session.saveOrUpdate(teacher1);   
  44.         session.saveOrUpdate(teacher2);   
  45.         session.beginTransaction().commit();   
  46.         session.close();   
  47.            
  48.         /**执行的sql  
  49.         Hibernate: insert into manytomany.teacher (name) values (?)  
  50.         Hibernate: insert into manytomany.student (name) values (?)  
  51.         Hibernate: insert into manytomany.student (name) values (?)  
  52.         Hibernate: insert into manytomany.teacher (name) values (?)  
  53.         Hibernate: insert into st (tid, sid) values (?, ?)  
  54.         Hibernate: insert into st (tid, sid) values (?, ?)  
  55.         Hibernate: insert into st (tid, sid) values (?, ?)  
  56.         */  
  57.            
  58.     }   
  59.   
  60. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值