【学习笔记】实例解说Hibernate 一对多、多对一关联关系
来源:互联网 发布:淘宝客服评价系统 编辑:程序博客网 时间:2024/06/05 20:20
前言:
这是我学习的总结,如有不当,欢迎大家指点!
这里以员工和部门作为例子给大家解说:
假设,一个员工只有一个部门,但是一个部门就可以有多个员工。
那么员工和部门就是多对一关系,部门和员工就是一对多关系。
// 员工 - 部门 // N - 1
通常:外键在多的一方,引用“1”的一方的主键
主要的实体类:
Department.java
import java.util.Set;/** * 部门 * @author Jerry * Department.java * */public class Department {private Integer deptId;private String name;//部门名称// 有很多的员工private Set<Employee> list;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getDeptId() {return deptId;}public void setDeptId(Integer deptId) {this.deptId = deptId;}public Set<Employee> getList() {return list;}public void setList(Set<Employee> list) {this.list = list;}}
Employee.java
/** * 员工 * @author Jerry * Employee.java * */public class Employee {private Integer emId;private String name;// 员工也有部门private Department dept;public String getName() {return name;}public void setName(String name) {this.name = name;}public Department getDept() {return dept;}public void setDept(Department dept) {this.dept = dept;}public Integer getEmId() {return emId;}public void setEmId(Integer emId) {this.emId = emId;}}
配置的映射文件:
Department.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"><!-- This mapping demonstrates --><!-- 告诉hibernate需要找哪个表 --><hibernate-mapping package="f_hbm_oneToMany"><!-- User表对应的映射关系 --><class name="Department" table="department"><id name="deptId"><generator class="identity" /></id><property column="name" generated="never" lazy="false" name="name" type="string" /><!-- Employee属性,List集合,表达的是本类与Employee的一对多的关系 --><set name="list"><key column="dept"></key><!-- key元素:对方表中的外键列(多的那方的表) --><one-to-many class="Employee"/><!-- 因为是关联关系,因此要用一对多声明 --></set></class></hibernate-mapping>
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"><!-- This mapping demonstrates --><!-- 告诉hibernate需要找哪个表 --><hibernate-mapping package="f_hbm_oneToMany"><!-- User表对应的映射关系 --><class name="Employee" table="employee"><id name="emId"><generator class="identity" /></id><property column="name" name="name" type="string" /><!-- department属性,表达的是本类与Department的多对一的关系 这里的column指的是这个外键的存放,可以不用写,hibernate会自动寻找Department类的映射文件,并且使用映射文件指定的列也可以与Department指定的<key column="dept"></key>相同,如果不同,hibernate会自动生成一个新的列,造成数据冗余 class属性:关联的实体类型column:外键列【关联对象的表的主键值】--><many-to-one name="dept" class="Department"></many-to-one></class></hibernate-mapping>
hibernate.cfg.xml文件就不说了,主要是引入两个类的映射文件
<mapping resource="Department.hbm.xml" /><mapping resource="Employee.hbm.xml" />
1 0
- 【学习笔记】实例解说Hibernate 一对多、多对一关联关系
- 《Hibernate学习笔记九》:多对一和一对多的关联关系
- 《Hibernate学习笔记九》:多对一和一对多的关联关系
- Hibernate关联关系映射 一对一 一对多 多对一
- Hibernate一对多、多对一关联关系的使用
- hibernate关联关系中的一对多以及多对一
- Hibernate关联关系映射(一对多/多对一)
- 【Hibernate】--关联关系映射:一对多和多对一
- hibernate映射关系 一对多、多对一单向关联 一对多双向关联
- Hibernate学习-7-关联映射(一对多,多对一)
- Hibernate关联关系映射(单向一对多、单向多对一、双向一对多)
- Hibernate 单向多对一、单向一对多、双向一对多关联关系详解
- hibernate一对多,多对一关联
- Hibernate学习笔记一(复杂多对一和一对多关系)
- Hibernate关联关系总结一对多、多对一单向关联
- hibernate 关联映射:多对一(一对多)双向关联关系
- Hibernate学习之表一对多,多对一关系
- Hibernate关联关系配置(一对多、一对一、多对一和多对多)
- 问题解答理解802.11n
- Tomcat服务器配置
- 在ubuntu系统下创建数据库。
- Mysql ERROR 1040 (HY000): Too many connections解决
- qqadfa
- 【学习笔记】实例解说Hibernate 一对多、多对一关联关系
- 用闪回功能恢复被更改的存储过程
- Android 自定义广播实现过程
- 用于贝叶斯统计的R包
- 深入学习JavaScript: apply 方法 详解(转)——非常好
- ping监控工具
- java socket编程
- JDBC 获取元数据DatabaseMetaData
- HDU1247 Hat’s Words【字典树】