用户和相册一对多关系思考分析

本文介绍了一种基于用户和相册的实体关联设计方法,包括数据库表结构、类设计及双向关联实现方式。通过User类与Album类的双向映射,实现了用户与多个相册之间的灵活关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建实体

1.用户表
user(id,userName,userPwd)
2.相册
album(id,uid,name,cover)

二、数据库设计方面

多方建立外键,指向一方,一个用户有多个相册,所以在相册类中建外键。

三、类设计方面

(1)站在用户的角度,每个用户可以有多个相册,通过getAlbums()可以拿到所有相册。
在User这边有一个属性Set<Album> albums=new HashSet<Album>();  

注意:new不是必须的,只是new完之后,就可以直接使用getAlbums().add();

(2)站在相册的角度,每个相册对应一个用户,
在Album这边,有一个属性user,可以通过 getUser()拿到对应的用户。

考虑当时我们讲过,有mappedBy的一方,不是维护关系的那一方,而且这一方不会建外键
所以mappedBy这一方应该是User,而Album这一方是维护关系的一方。

四、主要代码

(1)在Album中加入private User user; 

 @ManyToOne
    @JoinColumn(name="uid")
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }

(2)在User类中加入private Set<Album> albums=new HashSet<Album>();

@OneToMany(mappedBy="user")
    public Set<Album> getAlbums() {
        return albums;
    }
    public void setAlbums(Set<Album> albums) {
        this.albums = albums;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值