美文网首页
Hibernate学习笔记(二) 建立关系

Hibernate学习笔记(二) 建立关系

作者: 吴忆松 | 来源:发表于2019-10-29 00:32 被阅读0次

目录

一、多对一
二、一对多
三、多对多


一、多对一

这里以Product(多)对Category(一)为例。
1.准备Product.java (id,name,price)
2.准备Product.hbm.xml
3.准备Category.java (id,name)
4.准备Category.hbm.xml
5.在hibernate.cfg.xml中增加Category的映射

<mapping resource="com/how2java/pojo/Category.hbm.xml" />

6.为Product.java增加category属性

    Category category;
    public Category getCategory() {
        return category;
    }
    public void setCategory(Category category) {
        this.category = category;
    }

7.在Product.hbm.xml中设置Category 多对一关系
使用many-to-one 标签设置多对一关系
name="category" 对应Product类中的category属性
class="Category" 表示对应Category类
column="cid" 表示指向 category表的外键,这个外键就是在product表中增加字段cid,由hibernate自动完成。

<many-to-one name="category" class="Category" column="cid" />

二、一对多

这里以Category(一)对Product(多)为例。
一对多相较于多对一的区别在于两点:
1.要在“一”这个实体类里增加“多”的属性的时候,是增加一个Set集合

    Set<Product> products;
    public Set<Product> getProducts() {
        return products;
    }
    public void setProducts(Set<Product> products) {
        this.products = products;
    }

2.在“一”的配置文件中增加one-to-many映射(为Category.hbm.xml增加one-to-many映射)
set用于设置一对多(多对多也是他)关系
name="products" 表示对应 Category类中的products属性
lazy="false" 表示不使用延迟加载。
key column="cid" not-null="false" 表示外键是cid,可以为空
one-to-many class="Product" 表示一对多所对应的类是Product

        <set name="products" lazy="false">
            <key column="cid" not-null="false" />
            <one-to-many class="Product" />
        </set>

三、多对多

这里以Product(多)对User(多)为例。
要实现多对多关系,必须有一张中间表 user_product 用于维护User和Product之间的关系。
1.User.java中增加对应product的集合

    Set<Product> products;
    public Set<Product> getProducts() {
        return products;
    }
    public void setProducts(Set<Product> products) {
        this.products = products;
    }

2.User.hbm.xml中添加many-to-many映射

        <set name="products" table="user_product" lazy="false">
            <key column="uid" />
            <many-to-many column="pid" class="Product" />
        </set> 

3.Product.java中增加对应Users的集合

    Set<User> users;
    public Set<User> getUsers() {
        return users;
    }
    public void setUsers(Set<User> users) {
        this.users = users;
    }

4.Product.hbm.xml添加many-to-many映射

        <set name="users" table="user_product" lazy="false">
            <key column="pid" />
            <many-to-many column="uid" class="User" />
        </set> 

相关文章

  • Hibernate学习笔记(二) 建立关系

    目录 一、多对一二、一对多三、多对多 一、多对一 这里以Product(多)对Category(一)为例。1.准备...

  • Hibernate入门

    慕课网Hibernate学习笔记 开发环境 eclipse mars hibernate toos 最简单的例子 ...

  • Hibernate框架学习之增删改查

    Hibernate框架学习之增删改查 前言 上一小节我们建立一个基于Maven的Hibernate工程,并且完成基...

  • Hibernate详解

    补充学习hibernate 一、概念 Hibernate是一个开源的、轻量级的ORM(对象关系映射)工具。ORM工...

  • hibernate笔记-关联关系

    hibernate 关联关系主要有一对一,一对多,多对多 一对一关联 一对一关联包括: 主键关联 唯一外键关联 主...

  • Hibernate学习笔记(二)-实体之间的关联关系约定

    1.Many to One关联关系 部门实体: 对应的映射文件: 员工实体: 对应的映射文件: 2.One to ...

  • Hibernate12-Hibernate 关联关系

    建立关联关系,hibernate可以快速的查询出我们想要的信息,例如 员工表与部门表创建了关联关系,那我我们可以通...

  • Hibernate学习笔记

    本节重点:1、hibernate映射文件2、hibernate核心配置文件3、hibernate核心类 1、hib...

  • Hibernate学习笔记

    xml映射类 目的是将对象的属性和数据库的 column 一一对应,

    Hibernate学习笔记

    Hibernate环境搭建: 导入相关jar包; 创建实体类; 编写映射配置文件; 编写核心配置文件; Hiber...

网友评论

      本文标题:Hibernate学习笔记(二) 建立关系

      本文链接:https://www.haomeiwen.com/subject/synivctx.html