hibernate 关联映射用的多吗?
答案:1 悬赏:0 手机版
解决时间 2021-03-18 08:00
- 提问者网友:感性作祟
- 2021-03-18 05:02
hibernate 关联映射用的多吗?
最佳答案
- 五星知识达人网友:一袍清酒付
- 2021-03-18 05:58
其实Hibernate的这种个映射看上去很烦,但你弄明白之后会发现挺好用的
实际项目中如果整合了Hibernate 那么基本大部分查询都会涉及到一对多,多对一,多对多这汇总关系。
如果不用Hibernate ,可以用ibatis,这个基本就是靠你自己写原生的sql来查询
你举的那个例子:
首先你要弄明白这两个表之间什么关系?一对多还是一对一?
我给你举个一对多例子吧,比如用户(user)和部门(team),一个部门可以有多个用户,但一个用户只能属于一个部门
先是team类,省略了其它属性,只写重点
@Entity
@Table(name = "tn_team")//和数据中表面一致
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)//这个是缓存的配置
public class Team implements Serializable {//序列化
private List userList = Lists.newArrayList();//user数组
@OneToMany(mappedBy = "team")//告诉hibernate这是一个一对多的关系,mappedby的意思自己百度,我就不写了
@Fetch(FetchMode.SUBSELECT)//加载策略
@OrderBy("name ASC")//联合查询时的排序策略
public List getUserList() {
return userList;
}
public void setUserList(List userList) {
this.userList = userList;
}
}
然后是user类
@Entity
@Table(name = "tn_user")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable {
private Team team;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "team_id")//这个就是外键字段,就是你例子中的userid
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
}以上配置基于注解方式,多看看基础文章
追问因为目前公司没有用任何的框架,就纯 servlet,象平时遇到这种情况都是建立一个临时实体用 sql 语句进行联合查询就行。
另外想问下,xml 配置和 annotation 目前哪个用的多一点呢?因为书上都是用的 xml追答xml配置已经没人用了,书上那么写是因为书的出版时间太旧了
以后所有类似(不只hibernate)的配置都将使用注入的方式
实际项目中如果整合了Hibernate 那么基本大部分查询都会涉及到一对多,多对一,多对多这汇总关系。
如果不用Hibernate ,可以用ibatis,这个基本就是靠你自己写原生的sql来查询
你举的那个例子:
首先你要弄明白这两个表之间什么关系?一对多还是一对一?
我给你举个一对多例子吧,比如用户(user)和部门(team),一个部门可以有多个用户,但一个用户只能属于一个部门
先是team类,省略了其它属性,只写重点
@Entity
@Table(name = "tn_team")//和数据中表面一致
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)//这个是缓存的配置
public class Team implements Serializable {//序列化
private List
@OneToMany(mappedBy = "team")//告诉hibernate这是一个一对多的关系,mappedby的意思自己百度,我就不写了
@Fetch(FetchMode.SUBSELECT)//加载策略
@OrderBy("name ASC")//联合查询时的排序策略
public List
return userList;
}
public void setUserList(List
this.userList = userList;
}
}
然后是user类
@Entity
@Table(name = "tn_user")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable {
private Team team;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "team_id")//这个就是外键字段,就是你例子中的userid
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
}以上配置基于注解方式,多看看基础文章
追问因为目前公司没有用任何的框架,就纯 servlet,象平时遇到这种情况都是建立一个临时实体用 sql 语句进行联合查询就行。
另外想问下,xml 配置和 annotation 目前哪个用的多一点呢?因为书上都是用的 xml追答xml配置已经没人用了,书上那么写是因为书的出版时间太旧了
以后所有类似(不只hibernate)的配置都将使用注入的方式
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯