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=? 删除的时候最好删除从表,删除主表会先查询下主表,在联合查询下。
本文详细介绍了Hibernate框架中constrained属性的作用及其对数据操作的影响。解释了该属性如何应用于一对一关联关系,并探讨其对save和delete操作顺序的影响。此外,还讨论了constrained属性在查询优化及级联操作中的作用。
8119

被折叠的 条评论
为什么被折叠?



