hibernate关联关系

一、Hibernate关联关系
1 . 实体之间的关系

  • 泛化关系
    通过对象之间的继承来实现
  • 关联关系
    通过一个对象持有另一个对象的实现来实现
    类与类之间最常见的关系就是关联关系

2 . 关联关系

  • 一对多
  • 多对一
  • 多对多
  • 一对一

二、多对一关系

1.数据库表

drop table if exists t_emp;
drop table if exists t_dept;

create table t_dept(
	id int primary key auto_increment,
	name varchar(200)
)engine=Innodb default charset=utf-8;

create table t_emp(
	id int primary key auto_increment,
	name varchar(200),
	dept_id int,
	foreign key(dept_id) references t_dept(id)
)engine=Innodb default charset=utf-8;

#插入数据
insert into t_emp(name) values('d1'),('d2'),('d3');

insert into t_dept(name,dept_id) values('e1',1);
insert into t_dept(name,dept_id) values('e2',2);
insert into t_dept(name,dept_id) values('e3',3);
insert into t_dept(name,dept_id) values('e4',1);
insert into t_dept(name,dept_id) values('e5',1);
insert into t_dept(name,dept_id) values('e6',1);
insert into t_dept(name,dept_id) values('e7',2);


多对一关系:多个员工可以在同一个部门
多方----------->员工
一方----------->部门

2 . 配置方式

定义员工实体类

public Class Emp implements Serializable(
	private Integer id;
	private String name;
	private Dept dept; //在多方定义一方的引用
	
	//省略get\set方法

定义部门实体类

public Class Dept implements Serializable(
	private Integer id;
	private String name;
	
	//省略get\set方法

编写Emp.hbm.xml映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!-- hibernate映射文件、通过映射文件说明实体类和数据表的关联关系 -->
<hibernate-mapping package="cn.com.pojo">
    <!-- 类和表的映射 -->
    <class name="Emp" table="t_emp">
        <!-- 表中列和类中属性的映射 -->
        <!-- 主键 -->
        <id name="id" column="id">
            <!-- 指定主键生成策略、native是自增主键 -->
            <generator class="native"></generator>
        </id>
        <!-- 普通字段 -->
        <property name="name" column="name" type="java.lang.string"></property>
        <!-- 
	        配置多对一的关系
	        name : 属性名
	        column : 列名、外检列
	        class : 属性的类型
	     -->
	     <!-- 
	       lazy :数据加载策略,可取值如下
		       false :立即加载关联数据,查询两次
		       proxy :懒加载,以代理对象的方式进行加载,默认值 
		       no-proxy :懒加载,该方式在编译时需要进行字节码的增强,一般不怎么使用
	     -->
        <many-to-one name="dept" column="dept_id" class="Dept" lazy="false"></many-to-one>
    </class>
</hibernate-mapping>

编写Dept.hbm.xml映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!-- hibernate映射文件、通过映射文件说明实体类和数据表的关联关系 -->
<hibernate-mapping package="cn.com.pojo">
    <!-- 类和表的映射 -->
    <class name="Dept" table="t_dept">
        <!-- 表中列和类中属性的映射 -->
        <!-- 主键 -->
        <id name="id" column="id">
            <!-- 指定主键生成策略、native是自增主键 -->
            <generator class="native"></generator>
        </id>
        <!-- 普通字段 -->
        <property name="name" column="name" type="java.lang.string"></prop
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值