Hibernate如何处理外键?

首先,数据表中是不需要建立外键约束的,但需要有外键的字段吗?我认为应该是需要的其次,外键字段在实体类中应该怎样封装呢?是封装为一个普通属性,还是封装为对应的对象,并且配置... 首先,数据表中是不需要建立外键约束的,但需要有外键的字段吗?我认为应该是需要的
其次,外键字段在实体类中应该怎样封装呢?
是封装为一个普通属性,还是封装为对应的对象,并且配置为一对多,多对多等这种关联关系?
最后,如果封装为普通属性,insert和update的时候,对应的记录可能不存在,这就不合理了;
如果封装为对象,并且添加关联关系,查询的时候是方便了,但insert和update的时候,该怎么写代码 呢?
展开
 我来答
桂镶桖28
2013-11-14 · TA获得超过593个赞
知道小有建树答主
回答量:307
采纳率:0%
帮助的人:210万
展开全部
  1. 需要,一般用id作为外键。数据表中做不做外键约束都可以,各有优劣,一般是不做。

  2. hibernate处理简单的对象关系比较方便,一旦业务复杂之后,复杂度会变得非常高。所以当对象关系很简单,层级只有一级的时候,用对象比较方便;关系略有复杂,就不要用hibernate的级联查询了,自己来处理。

  3. 普通属性做插入更新时,记录不存在也没关系,查询的时候排除掉就行。比较好的方式是在原数据表加个disable项,删除的时候是修改disable为1,而不是真的删除,这样就不用考虑记录不存在的情况了。

  4. 对象插入更新时,需要得到外键id,做个对象set进去就行。

User user = new User();
user.setId(userId);
Book book = new Book();
book.setUser(user);
book.setName("")
...
session.save(book);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式