hibernate constrained属性 其在表的映射关联关系 的作用

	hibernate文档上是这么写的:

	constrained(约束) (可选) 表明该类对应的表对应的数据库表,和被关联的对象所对应的数据库表之间, 通过一个外键引用对主键进行约束。
这个选项影响save() 和delete() 在级联执行时的先后顺序(也在schema export tool中被使用)。

	constrained默认值为false

	constrained只能在 one-to-one 的映射中使用,(一般在主表的映射中,有外键的那个表)。
如果constrained=true, 则表明存在外键与关联表对应,并且关联表中肯定存在对应的键与其对应,
另外该选项最关键的是影响save和delete的先后顺序。例如增加的时候,如果constainted=true,则会先增加关联表,然后增加本表。 删除的时候反之。


one-to-one的单向关联中,
	如果constrained=false,则会在查询时就全部取出来,用left outer join的方式。
	如果constrained=true,hibernate即会延迟加载sql,只把主表的查出来,等有用到关联表的再发sql取。


one-to- one的双向关联中,
	必须设置constrained=true,要不然会有重复数据读,
	如2个表user,car;在位false时sql如 下:select * from user a left outer join car b on a.id=b.id left outer join on user c on a.id=c.id where a.id=? 
			删除的时候最好删除从表,删除主表会先查询下主表,在联合查询下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值