JPA关联关系

mac2026-05-10  2

多对一/一对一

一般有多的一方来维护关联关系, //映射单向 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 语句相同.

 

 

最新回复(0)