Hibernate(二)多对多对应关系

                                                      Hibernate多对多关系(源码)

 

链接:http://pan.baidu.com/s/1bo0fI27 密码:4e3p

 

 

 

1.所依赖的包

 

建表语句 

Hibernate多对多映射
一个项目可以由多个员工参与开发
一个员工同时参与开发多个项目
<many-to-many></many-to-many>
多对多关联可以使用<set> 元素 和<many-to-many>元素进行配置
多对多关联关系一般采用中间表的形式,新增一张包含关联双方主键的 多对多关联关系一般采用中间表的形式,
新增一张包含关联双方主键的关联表


create table project(
proid int primary key,
proname varcahr(20) not null
);
create table employee(
empid int primary key,
empname varcahr(20)
);
外键
create table proemp(
rproid int,
rempid int
);
添加外键约束
alter table proemp add constraint fk_rproid foreign
key (rproid ) references project(proid);

alter table proemp add constraint fk_rempind foreign
key (rempid) references employee(empid)

2.HibernateUtil.java(工具包)

package com.imooc.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
private static SessionFactory sessionFactory;
private static Session session;

static {
// 创建Configuration对象,读取hibernate.cfg.xml文件,完成初始化
Configuration config = new Configuration().configure();
StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder()
.applySettings(config.getProperties());
StandardServiceRegistry ssr=ssrb.build();
sessionFactory=config.buildSessionFactory(ssr);
}

//获取SessionFactory
public static SessionFactory getSessionFactory(){
return sessionFactory;
}

//获取Session
public static Session getSession(){
session=sessionFactory.openSession();
return session;
}

//关闭Session
public static void closeSession(Session session){
if(session!=null){
session.close();
}
}
}

2.员工类

package com.imooc.entity;

import java.util.HashSet;
import java.util.Set;
/*
* 员工类
*/
public class Employee {
private int empid;
private String empname;
// 添加一个项目的集合
private Set<Project> projects = new HashSet<Project>();

public Employee(int empid, String empname) {
super();
this.empid = empid;
this.empname = empname;
}

public Employee(int empid, String empname, Set<Project> projects) {
super();
this.empid = empid;
this.empname = empname;
this.projects = projects;
}

public Employee() {
super();
}

public int getEmpid() {
return empid;
}

public void setEmpid(int empid) {
this.empid = empid;
}

public String getEmpname() {
return empname;
}

public void setEmpname(String empname) {
this.empname = empname;
}

public Set<Project> getProjects() {
return projects;
}

public void setProjects(Set<Project> projects) {
this.projects = projects;
}

}

3项目类

package com.imooc.entity;

import java.util.HashSet;
import java.util.Set;
/*
* 项目类
*/
public class Project {
private int proid;
private String proname;
// 添加一个员工的集合
private Set<Employee> employees = new HashSet<Employee>();

public Project(int proid, String proname) {
super();
this.proid = proid;
this.proname = proname;
}

public Project(int proid, String proname, Set<Employee> employees) {
super();
this.proid = proid;
this.proname = proname;
this.employees = employees;
}

public Project() {
super();
}

public int getProid() {
return proid;
}

public void setProid(int proid) {
this.proid = proid;
}

public String getProname() {
return proname;
}

public void setProname(String proname) {
this.proname = proname;
}

public Set<Employee> getEmployees() {
return employees;
}

public void setEmployees(Set<Employee> employees) {
this.employees = employees;
}

}

4关系Employee.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.imooc.entity.Employee" table="employee">
<id name="empid" column="empid" type="java.lang.Integer">
<generator class="assigned"></generator>
</id>
<property name="empname" type="java.lang.String">
<column name="empname" length="20" not-null="true"></column>
</property>
<!-- 配置多对多关联关系 -->
<set name="projects" table="proemp" inverse="true">
<key column="rempid"></key>
<many-to-many class="com.imooc.entity.Project" column="rproid"></many-to-many>
</set>
</class>
</hibernate-mapping>

 

 

5Project.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.imooc.entity.Project" table="project">
<id name="proid" column="proid" type="java.lang.Integer">
<generator class="assigned"></generator>
</id>
<property name="proname" type="java.lang.String">
<column name="proname" length="20" not-null="true"></column>
</property>
<!-- 配置多对多关联关系 -->
<set name="employees" table="proemp" cascade="all">
<key column="rproid"></key>
<many-to-many class="com.imooc.entity.Employee" column="rempid"></many-to-many>
</set>
</class>
</hibernate-mapping>

 

posted @ 2016-08-21 22:52  那就这样吧-  阅读(106)  评论(0编辑  收藏  举报