SSH框架之Hibernate的关联映射之一对多、多对一映射
来源:互联网 发布:linux零基础 编辑:程序博客网 时间:2024/05/16 09:43
关联映射之一对多、多对一映射
一、需求:
部门与员工
一个部门有多个员工 【一对多】
多个员工,属于一个部门 【多对一】
二、逻辑分析:
三、代码实现
1、javabean及映射文件的配置:
1)Employee.java、Employee.hbm.xml
2)Dept.java、Dept.hbm.xml
完整的Dept.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="sram.oneTomany" auto-import="true"> <class name="Dept" table="t_dept"> <id name="deptId"> <generator class="native"></generator> </id> <property name="deptName" length="20"></property> <!-- 一对多关联映射的配置(通过部门管理员工) Dept 映射关键点: 1. 指定 映射的集合属性: "emps" 2. 集合属性对应的集合表: "t_employee" 3. 集合表的外键字段 "t_employee. dept_id" 4. 集合元素的类型 table="t_employee"可以省略, 因为有对应的<one-to-many class="Employee"/>, 并且可以找到Employee.hbm.xml 如果写上,那么talbe的值"t_employee"一定要与 Employee.hbm.xml(<class name="Employee" table="t_employee">)中的表名一致 --> <set name="emps" table="t_employee"> <!-- colunmn的值(dept_id),一定要与Employee.hbm.xml中的 <many-to-one name="dept" column="dept_id" class="Dept"></many-to-one> 的colunm值一致 --> <key column="dept_id"></key> <!-- class指定集合元素类型,sram.oneTomany.Employee, 但是因为<hibernate-mapping package="sram.oneTomany" auto-import="true"> 这里已经指定包名,所以只写Employee就OK --> <one-to-many class="Employee"/> </set> </class></hibernate-mapping>
2、测试类App1_save.java——实现保存的功能
package sram.oneToMany;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.Test;public class App1_save { public static SessionFactory sf; static{ sf = new Configuration() .configure() .addClass(Dept.class) .addClass(Employee.class)//测试使用 .buildSessionFactory();
1)部门方(一的一方操作)
2)【推荐】员工方(多的一方操作)
3、数据库结果:
1)员工表:
2)部门表:
4、测试类App2_get.java——实现保存的功能
package sram.oneToMany;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.Test;public class App1_save { public static SessionFactory sf; static{ sf = new Configuration() .configure() .addClass(Dept.class) .addClass(Employee.class)//测试使用 .buildSessionFactory();
1)通过部门方获取另一方:
2)通过员工方获取另一方:
四、总结:
1、在一对多与多对一的关联关系中,保存数据最好通过多的一方来维护关系,这样可以减少update语句的生成,从而提高hibernate的执行效率!
2、概念:
配置一对多与多对一,这种叫“双向关联”
只配置一对多,叫“单向一对多”
只配置多对一,叫“单向多对一”
3、注意:配置了哪一方,哪一方才有维护关联关系的权限!
1 0
- SSH框架之Hibernate的关联映射之一对多、多对一映射
- 【SSH系列】Hibernate映射-- 多对一单向关联映射
- Hibernate关联映射--多对一映射
- Hibernate关联映射之一对多、多对多映射
- 【HIbernate框架学习】:Hibernate对象关系映射之单向多对一关联映射
- 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
- 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
- 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
- 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
- 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
- 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
- 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
- Hibernate关联映射之一对多单向关联映射
- Hibernate之一对多关联映射
- Hibernate之一对多关联映射
- 技术分析之Hibernate的关联关系映射之一对多映射
- SSH框架之Hibernate的多对多映射、多对多关联关系维护(inverse)
- Hibernate 关联映射 之 多对多 关联(一)
- sbt笔记
- elasticsearch 在大数据中能实现哪些功能
- 下载jdk
- centos 6.5 安装 tomcat
- 前端的学习总结
- SSH框架之Hibernate的关联映射之一对多、多对一映射
- 禁止后台运行
- 大华摄像头如何添加通道标题
- js中的touch事件及gesture(手势)事件详解 — 第13.4.9节
- nginx反向代理时,X-Forwarded-For 如何设置
- 如何解决ajax跨域问题(转)
- 数学分析常用的4款软件对比!
- 如何获取设备的UDID
- webservice 入门学习