多对一/一对一
- 一般有多的一方来维护关联关系,
-
//映射单向 n-1 的关联关系 //使用 @ManyToOne 来映射多对一的关联关系 //使用 @JoinColumn 来映射外键. //可使用 @ManyToOne 的 fetch 属性来修改默认的关联属性的加载策略 @JoinColumn(name="1的一方的id") @ManyToOne(fetch=FetchType.LAZY)
-
保存的时候建议先保存 1 的一方 ,这样不会多出n条update语句
-
获取n的一方的时候,用做外链接方式来获取1的一方的对象,可以使用@ManyToOne的fetch属性来设置为懒加载
-
不能直接删除1的一方,因为有键约束
多对多
-
//使用 @ManyToMany 注解来映射多对多关联关系 //使用 @JoinTable 来映射中间表 //1. name 指向中间表的名字 //2. joinColumns 映射当前类所在的表在中间表中的外键 //2.1 name 指定外键列的列名 //2.2 referencedColumnName 指定外键列关联当前表的哪一列 //3. inverseJoinColumns 映射关联的类所在中间表的外键 @JoinTable(name="ITEM_CATEGORY", joinColumns={@JoinColumn(name="ITEM_ID", referencedColumnName="ID")}, inverseJoinColumns={@JoinColumn(name="CATEGORY_ID", referencedColumnName="ID")}) @ManyToMany @ManyToMany(mappedBy="categories")//另一方放弃维护
-
对于关联的集合对象, 默认使用懒加载的策略.
-
使用维护关联关系的一方获取, 还是使用不维护关联关系的一方获取, SQL 语句相同.