package
org.myhibernate;
public class TestDemo
... {
public static void main(String[] args)
...{
Student s1=new Student();
Student s2=new Student();
Student s3=new Student();
s1.setStuname("zhangsan");
s2.setStuname("lisi");
s3.setStuname("wangwu");
Teacher t1=new Teacher();
Teacher t2=new Teacher();
Teacher t3=new Teacher();
t1.setTeaname("professor zhang");
t2.setTeaname("professor li");
t3.setTeaname("professor wang");
s1.getTeachers().add(t1);
s1.getTeachers().add(t2);
s1.getTeachers().add(t3);
s2.getTeachers().add(t2);
s2.getTeachers().add(t3);
s3.getTeachers().add(t3);
StuDAO so=new StuDAO();
so.save(s1);
so.save(s2);
so.save(s3);
}
}
public class TestDemo
... {
public static void main(String[] args)
...{
Student s1=new Student();
Student s2=new Student();
Student s3=new Student();
s1.setStuname("zhangsan");
s2.setStuname("lisi");
s3.setStuname("wangwu");
Teacher t1=new Teacher();
Teacher t2=new Teacher();
Teacher t3=new Teacher();
t1.setTeaname("professor zhang");
t2.setTeaname("professor li");
t3.setTeaname("professor wang");
s1.getTeachers().add(t1);
s1.getTeachers().add(t2);
s1.getTeachers().add(t3);
s2.getTeachers().add(t2);
s2.getTeachers().add(t3);
s3.getTeachers().add(t3);
StuDAO so=new StuDAO();
so.save(s1);
so.save(s2);
so.save(s3);
}
}
原理:数据库中的多对多实现方式,一般采用对存在多对多关系的两个对象表,建立多对多关联表,就是用一个独立的表来存放两个表的主键字段,通过遍历这张关系表来获取两表的关联关系。
1、数据库
create
table
`testdb`.`student`(
`stuid` int not null auto_increment,
`stuname` varchar ( 50 ),
primary key (`stuid`)
);
create unique index ` PRIMARY ` on `testdb`.`student`(`stuid`);
create table `testdb`.`teacher`(
`teaid` int not null auto_increment,
`teaname` varchar ( 50 ),
primary key (`teaid`)
);
create unique index ` PRIMARY ` on `testdb`.`teacher`(`teaid`);
create table `testdb`.`stu_tea_table`(
`stuid` int ,
`teaid` int
);
`stuid` int not null auto_increment,
`stuname` varchar ( 50 ),
primary key (`stuid`)
);
create unique index ` PRIMARY ` on `testdb`.`student`(`stuid`);
create table `testdb`.`teacher`(
`teaid` int not null auto_increment,
`teaname` varchar ( 50 ),
primary key (`teaid`)
);
create unique index ` PRIMARY ` on `testdb`.`teacher`(`teaid`);
create table `testdb`.`stu_tea_table`(
`stuid` int ,
`teaid` int
);
2、创建eclipse的hibernate支持
3、生成并student表和teacher表的hbm映射跟相应的POJO类,
//
Student.java
package org.myhibernate;
import java.util.HashSet;
import java.util.Set;
/** */ /**
* Student generated by MyEclipse Persistence Tools
*/
public class Student implements java.io.Serializable
... {
// Fields
private Integer stuid;
private String stuname;
private Set teachers=new HashSet();
// Constructors
/** *//** default constructor */
public Student()
...{
}
/** *//** full constructor */
public Student(String stuname)
...{
this.stuname = stuname;
}
// Property accessors
public Integer getStuid()
...{
return this.stuid;
}
public void setStuid(Integer stuid)
...{
this.stuid = stuid;
}
public String getStuname()
...{
return this.stuname;
}
public void setStuname(String stuname)
...{
this.stuname = stuname;
}
public Set getTeachers()
...{
return teachers;
}
public void setTeachers(Set teachers)
...{
this.teachers = teachers;
}
}
// Teacher.java
package org.myhibernate;
import java.util.HashSet;
import java.util.Set;
/** */ /**
* Teacher generated by MyEclipse Persistence Tools
*/
public class Teacher implements java.io.Serializable
... {
// Fields
private Integer teaid;
private String teaname;
private Set students=new HashSet();
// Constructors
/** *//** default constructor */
public Teacher()
...{
}
/** *//** full constructor */
public Teacher(String teaname)
...{
this.teaname = teaname;
}
// Property accessors
public Integer getTeaid()
...{
return this.teaid;
}
public void setTeaid(Integer teaid)
...{
this.teaid = teaid;
}
public String getTeaname()
...{
return this.teaname;
}
public void setTeaname(String teaname)
...{
this.teaname = teaname;
}
public Set getStudents()
...{
return students;
}
public void setStudents(Set students)
...{
this.students = students;
}
}
package org.myhibernate;
import java.util.HashSet;
import java.util.Set;
/** */ /**
* Student generated by MyEclipse Persistence Tools
*/
public class Student implements java.io.Serializable
... {
// Fields
private Integer stuid;
private String stuname;
private Set teachers=new HashSet();
// Constructors
/** *//** default constructor */
public Student()
...{
}
/** *//** full constructor */
public Student(String stuname)
...{
this.stuname = stuname;
}
// Property accessors
public Integer getStuid()
...{
return this.stuid;
}
public void setStuid(Integer stuid)
...{
this.stuid = stuid;
}
public String getStuname()
...{
return this.stuname;
}
public void setStuname(String stuname)
...{
this.stuname = stuname;
}
public Set getTeachers()
...{
return teachers;
}
public void setTeachers(Set teachers)
...{
this.teachers = teachers;
}
}
// Teacher.java
package org.myhibernate;
import java.util.HashSet;
import java.util.Set;
/** */ /**
* Teacher generated by MyEclipse Persistence Tools
*/
public class Teacher implements java.io.Serializable
... {
// Fields
private Integer teaid;
private String teaname;
private Set students=new HashSet();
// Constructors
/** *//** default constructor */
public Teacher()
...{
}
/** *//** full constructor */
public Teacher(String teaname)
...{
this.teaname = teaname;
}
// Property accessors
public Integer getTeaid()
...{
return this.teaid;
}
public void setTeaid(Integer teaid)
...{
this.teaid = teaid;
}
public String getTeaname()
...{
return this.teaname;
}
public void setTeaname(String teaname)
...{
this.teaname = teaname;
}
public Set getStudents()
...{
return students;
}
public void setStudents(Set students)
...{
this.students = students;
}
}
5、修改hbm映射
6、DAO类
//
StuDAO.java
package org.myhibernate;
import org.hibernate.Session;
public class StuDAO
... {
public void save(Student s)
...{
Session session=HibernateSessionFactory.getSession();
session.save(s);
session.beginTransaction().commit();
}
}
// TeaDAO.java
package org.myhibernate;
import org.hibernate.Session;
public class TeaDAO
... {
public void save(Teacher t)
...{
Session session=HibernateSessionFactory.getSession();
session.save(t);
session.beginTransaction().commit();
}
}
package org.myhibernate;
import org.hibernate.Session;
public class StuDAO
... {
public void save(Student s)
...{
Session session=HibernateSessionFactory.getSession();
session.save(s);
session.beginTransaction().commit();
}
}
// TeaDAO.java
package org.myhibernate;
import org.hibernate.Session;
public class TeaDAO
... {
public void save(Teacher t)
...{
Session session=HibernateSessionFactory.getSession();
session.save(t);
session.beginTransaction().commit();
}
}
7、测试类
package
org.myhibernate;
public class TestDemo
... {
public static void main(String[] args)
...{
Student s1=new Student();
Student s2=new Student();
Student s3=new Student();
s1.setStuname("zhangsan");
s2.setStuname("lisi");
s3.setStuname("wangwu");
Teacher t1=new Teacher();
Teacher t2=new Teacher();
Teacher t3=new Teacher();
t1.setTeaname("professor zhang");
t2.setTeaname("professor li");
t3.setTeaname("professor wang");
s1.getTeachers().add(t1);
s1.getTeachers().add(t2);
s1.getTeachers().add(t3);
s2.getTeachers().add(t2);
s2.getTeachers().add(t3);
s3.getTeachers().add(t3);
StuDAO so=new StuDAO();
so.save(s1);
so.save(s2);
so.save(s3);
}
}
public class TestDemo
... {
public static void main(String[] args)
...{
Student s1=new Student();
Student s2=new Student();
Student s3=new Student();
s1.setStuname("zhangsan");
s2.setStuname("lisi");
s3.setStuname("wangwu");
Teacher t1=new Teacher();
Teacher t2=new Teacher();
Teacher t3=new Teacher();
t1.setTeaname("professor zhang");
t2.setTeaname("professor li");
t3.setTeaname("professor wang");
s1.getTeachers().add(t1);
s1.getTeachers().add(t2);
s1.getTeachers().add(t3);
s2.getTeachers().add(t2);
s2.getTeachers().add(t3);
s3.getTeachers().add(t3);
StuDAO so=new StuDAO();
so.save(s1);
so.save(s2);
so.save(s3);
}
}