公司现在在开发已套微博,其中有这样一个需求,就是用户可以关注某人,也可以被某人关注数据持久层云用的是hibernate,我现在实体类使用多对多实现的,User对象中的关联的代码如下: @ManyToMany
@JoinTable(name = "concern_user", joinColumns = { @JoinColumn(name = "myUserId") }, inverseJoinColumns = { @JoinColumn(name = "concernuserId") })
private Set<User> concern;// 我关注的人 @ManyToMany
@JoinTable(name = "concern_user", joinColumns = { @JoinColumn(name = "concernuserId") }, inverseJoinColumns = { @JoinColumn(name = "myUserId") })
private Set<User> beConcern;// 关注我的人这样带来很多方便,比如,我在页面上显示某个人有多少关注的人,和被多少人关注的时候,我就直接用
concern。size(),beConcern。size()来得到,但是这样会导致很多sql语句,而且,当用户添加了个关注对象,或被别人关注了以后缓存又要更新,这样导致缓存的利用率会下降,而且查询也不方便,比如,我想查关注我的但年龄小于20的,性别又是女的我就不知道怎么查。
我现在的想法是在user对象中加两个属性,但这两属性不存数据库,在对象的初始化的时候通过查询加载。但这样做的话又要多一层装载对象的层,有点麻烦,怎么办才好呢,大伙有啥想法没??