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

一、创建实体

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;
    }

猜你喜欢

转载自blog.csdn.net/tangbin0505/article/details/82555816
今日推荐