两张普通表:
Projecttable:
proID number(6) primary key,
proName nvarchar2(50)
Employee
empID number(6) primary key,
empName nvarchar2(50)
一张关系表:
proEmp:联合主键+外键
rproID number(6),
rempID number(6),
CONSTRAINT PK_ProjectTable_Employee PRIMARY KEY (rproID,rempID),
constraint FK_Employee_empID foreign key(rempID)
references Employee(empID),
constraint FK_ProjectTable_proID foreign key(rproID)
references ProjectTable(proID)
pojo:Projecttable
private Set<Employee> employees = new HashSet<Employee>(0);//负责项目的员工集合
pojo:Employee
private Set<Projecttable> projecttables = new HashSet<Projecttable>(0);//员工负责的项目集合
dao:Projecttable
public void save(Projecttable projecttable){
currentSession().save(projecttable);
}
dao:Employee
public void save(Employee employee){
currentSession().save(employee);
}
service:Projecttable
ProjecttatbleDao projecttatbleDao=new ProjecttatbleDao();
public void addProjecttable(Projecttable projecttable){
Transaction tx=null;
try {
tx=HibernateUtil.currentSession().beginTransaction();
projecttatbleDao.save(projecttable);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null){
tx.rollback();
}
}
}
service:Employee
EmployeeDao employeeDao=new EmployeeDao();
public void addEmployee(Employee employee){
Transaction tx=null;
try {
tx=HibernateUtil.currentSession().beginTransaction();
employeeDao.save(employee);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null){
tx.rollback();
}
}
}
Test:
//两个项目
Projecttable projecttable1=new Projecttable();
projecttable1.setProid(1);
projecttable1.setProname("易买网");
Projecttable projecttable2=new Projecttable();
projecttable2.setProid(2);
projecttable2.setProname("新闻发布系统");
//四个员工
Employee employee1=new Employee();
employee1.setEmpid(1);
employee1.setEmpname("李林");
Employee employee2=new Employee();
employee2.setEmpid(2);
employee2.setEmpname("王尼玛");
Employee employee3=new Employee();
employee3.setEmpid(3);
employee3.setEmpname("李尼玛");
Employee employee4=new Employee();
employee4.setEmpid(4);
employee4.setEmpname("张尼玛");
employee1.getProjecttables().add(projecttable1);
employee1.getProjecttables().add(projecttable2);
employee2.getProjecttables().add(projecttable2);
employee3.getProjecttables().add(projecttable2);
employee4.getProjecttables().add(projecttable2);
projecttable1.getEmployees().add(employee1);
projecttable2.getEmployees().add(employee1);
projecttable2.getEmployees().add(employee2);
projecttable2.getEmployees().add(employee3);
projecttable2.getEmployees().add(employee4);
//执行添加数据,关联关系体现在PROEMP表中
new ProjecttableService().addProjecttable(projecttable1);
new ProjecttableService().addProjecttable(projecttable2);
//或者
new EmployeeService().addEmployee(employee1);
new EmployeeService().addEmployee(employee2);
new EmployeeService().addEmployee(employee3);
new EmployeeService().addEmployee(employee4);