Hibernate many2many映射关系
来源:互联网 发布:php aes对称加密算法 编辑:程序博客网 时间:2024/05/22 06:36
多对多映射关系:
开发步骤:
JavaBean 映射文件 测试
图片详解:
1.javaBean
Project.java
package cn.itcast.many2many;import java.util.HashSet;import java.util.Set;public class Project {private int proj_id;@Overridepublic String toString() {return "Project [proj_id=" + proj_id + ", proj_name=" + proj_name+ ", developers=" + developers + "]";}private String proj_name;private Set<Developer> developers=new HashSet<Developer>();public int getProj_id() {return proj_id;}public void setProj_id(int proj_id) {this.proj_id = proj_id;}public String getProj_name() {return proj_name;}public void setProj_name(String proj_name) {this.proj_name = proj_name;}public Set<Developer> getDevelopers() {return developers;}public void setDevelopers(Set<Developer> developers) {this.developers = developers;}}Employee.java
package cn.itcast.many2many;import java.util.HashSet;import java.util.Set;public class Developer {@Overridepublic String toString() {return "Developer [d_id=" + d_id + ", d_name=" + d_name + ", projects="+ projects + "]";}private int d_id;private String d_name;private Set<Project> projects=new HashSet<Project>();public int getD_id() {return d_id;}public void setD_id(int d_id) {this.d_id = d_id;}public String getD_name() {return d_name;}public void setD_name(String d_name) {this.d_name = d_name;}public Set<Project> getProjects() {return projects;}public void setProjects(Set<Project> projects) {this.projects = projects;}}2.配置文件
多对多的关系映射
1.映射的集合属性
2.属性对应的中间表
3.外键字段 projid
4.外键字段对应的中间表属性did
5.集合属性元素的类型
Project.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 package="cn.itcast.many2many" auto-import="true"><class name="Project"><id name="proj_id"><generator class="native"></generator></id><property name="proj_name" column="proj_name" length="20" type="string"></property><!-- 多对多的关系映射1.映射的集合属性2.属性对应的中间表3.外键字段 projid4.外键字段对应的中间表属性did5.集合属性元素的类型 --> <set name="developers" table="t_relation" cascade="save-update" inverse="true"> <key column="projid"></key> <many-to-many class="Developer" column="did"></many-to-many> </set></class></hibernate-mapping>Developer.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 package="cn.itcast.many2many" auto-import="true"><class name="Developer"><id name="d_id"><generator class="native"></generator></id><property name="d_name" column="d_name" length="20" type="string"></property><!-- 这里配置的是多对多的关系映射 --> <set name="projects" table="t_relation"> <key column="did"></key> <many-to-many class="Project" column="projid"></many-to-many> </set></class></hibernate-mapping>
测试类:
package cn.itcast.many2many;import org.hibernate.Transaction;import org.hibernate.classic.Session;import org.junit.Test;import cn.itcast.utils.HibernateUtil;public class App {@Testpublic void test(){Session session = HibernateUtil.getSession();Transaction transaction = session.beginTransaction();//通过项目表维护员工表//1.项目表Project proj=new Project();proj.setProj_name("OA项目");Project proj2=new Project();proj2.setProj_name("ERP系统");//2.员工表Developer dev_lwk=new Developer();dev_lwk.setD_name("李卫康");Developer dev_hw=new Developer();dev_hw.setD_name("韩玮");Developer dev_ccs=new Developer();dev_ccs.setD_name("程崇树");//3.关系proj.getDevelopers().add(dev_lwk);proj.getDevelopers().add(dev_hw);proj2.getDevelopers().add(dev_lwk);proj2.getDevelopers().add(dev_ccs);session.save(proj);session.save(proj2);transaction.commit();session.close();}}
运行测试得到的数据库表:
t_relation的外键
0 0
- Hibernate many2many映射关系
- Hibernate基础------》映射关系---》many2many
- Hibernate 的关系映射1 Many2Many
- Hibernate 映射关系 ---Many2Many 单向关联
- Hibernate 映射关系 ---Many2Many 双向关联
- hibernate映射关系一对一映射
- Hibernate关系映射
- Hibernate 继承关系映射
- Hibernate关系映射
- Hibernate 映射关系
- Hibernate组合映射关系
- Hibernate关系映射详解
- Hibernate 关系映射
- hibernate映射关系理解
- hibernate--关系映射CRUD
- Hibernate关系映射
- Hibernate关系映射
- hibernate映射关系
- 杭电诡异的楼梯,参考了大神的代码,整理了好久的思路才做出来
- 黑马程序员——Java基础——IO(一)
- Haproxy状态总结
- linux下core文件的调试
- 步步为营(八)常用数据结构(1)STL-List(双端链表)
- Hibernate many2many映射关系
- STP生成树协议实例详解
- Java网络编程基础
- 初级程序员避免错误的14个诀窍
- Android之媒体库(一)
- iOS开发——keychain的使用
- 对 Linux 新手非常有用的 20 个命令
- Spring MVC学习-----------springMVC-mvc.xml
- 在sublime text3中编写的html文件怎样运行