Hibernate框架-多对多映射
来源:互联网 发布:手机淘宝消息发不出去 编辑:程序博客网 时间:2024/05/23 17:07
需求:
学生与课程
一个学生可以有多门课程
一个课程可以有多个学生
代码:
public class Developer { private int d_id; private Stringd_name; // 开发人员,参数的多个项目 private Set<Project>projects = new HashSet<Project>();}
public class Project { private int prj_id; private Stringprj_name; // 项目下的多个员工 private Set<Developer>developers = new HashSet<Developer>();}
<?xmlversion="1.0"?><!DOCTYPEhibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mappingpackage="cn.itcast.c_many2many"> <classname="Project"table="t_project"> <idname="prj_id"> <generatorclass="native"></generator> </id> <propertyname="prj_name"length="20"></property> <!-- 多对多映射: 1. 映射的集合属性: “developers” 2. 集合属性,对应的中间表: “t_relation” 3. 外键字段: prjId 4. 外键字段,对应的中间表字段: did 5. 集合属性元素的类型 --> <setname="developers"table="t_relation"cascade="save-update"> <keycolumn="prjId"></key> <many-to-manycolumn="did"class="Developer"></many-to-many> </set> </class> </hibernate-mapping>
<?xmlversion="1.0"?><!DOCTYPEhibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mappingpackage="cn.itcast.c_many2many"> <classname="Developer"table="t_developer"> <idname="d_id"> <generatorclass="native"></generator> </id> <propertyname="d_name"length="20"></property> <!-- 多对多映射配置:员工方 name 指定映射的集合属性 table 集合属性对应的中间表 key 指定中间表的外键字段(引用当前表t_developer主键的外键字段) many-to-many column 指定外键字段对应的项目字段 class 集合元素的类型 --> <setname="projects"table="t_relation"> <keycolumn="did"></key> <many-to-manycolumn="prjId"class="Project"></many-to-many> </set> </class> </hibernate-mapping>
维护关联关系
设置inverse属性,在多对多种维护关联关系的影响?
1) 保存数据
有影响。
inverse=false ,有控制权,可以维护关联关系;保存数据的时候会把对象关系插入中间表;
inverse=true, 没有控制权,不会往中间表插入数据。
2) 获取数据
无。
3) 解除关系
// 有影响。
// inverse=false ,有控制权,解除关系就是删除中间表的数据。
// inverse=true, 没有控制权,不能解除关系。
4) 删除数据
有影响。
// inverse=false, 有控制权。先删除中间表数据,再删除自身。
// inverse=true, 没有控制权。如果删除的数据有被引用,会报错!否则,才可以删除
阅读全文
0 0
- Hibernate框架-------多对多映射(五)
- Hibernate框架-多对多映射
- Hibernate框架-----多对一映射(三)
- 【Hibernate框架】关联映射(多对多关联映射)
- ORM框架Hibernate (五) 多对多关联映射
- 【Hibernate框架】关联映射(一对多,多对一)
- 【HIbernate框架学习】:Hibernate对象关系映射之单向多对多关联映射
- 【HIbernate框架学习】:Hibernate对象关系映射之双向多对多关联映射
- 【HIbernate框架学习】:Hibernate对象关系映射之单向多对一关联映射
- Hibernate框架中如何将多对多映射转化为多对一映射
- Hibernate框架中如何将多对多映射转化为多对一映射
- Hibernate框架中如何将多对多映射转化为多对一映射
- SSH框架之Hibernate的关联映射之一对多、多对一映射
- Hibernate关联映射--多对一映射
- hibernate 多对多映射
- Hibernate多对多映射
- hibernate多对多映射
- Hibernate多对多映射
- android线程与UI消息传递
- Redis 讲解系列之 Redis的消息订阅
- D
- NIO 零拷贝深入分析
- Android多线程—AsyncTask的完全解析
- Hibernate框架-多对多映射
- Phpstorm主题更换
- mybatis中sql语句where子句中使用in实现批量操作
- AI技术大盘点: 神经网络/机器学习/深度学习/大数据…你想知道的都在这些图里了
- 程序员教你如何追女生
- JAVA中的栈和堆
- java map的遍历方法总结
- JavaScript中对访问者浏览器信息的获取
- oracle mysql SqlServer 实现分页查询语句