jpa中延迟加载和关系维护问题

jpa中可以通过注解中的fetch=FetchType.LAZY来实现懒加载的目的。

jap总通过mappedBy=""指定类为关系被维护端由关系维护端的那个属性维护

例:

1的一方的一个属性

@OneToMany(fetch=FetchType.LAZY,mappedBy("关系维护端的一个属性名"))

public Set<Item> getItems(){

 return items;

}

这里会实现items的懒加载,我们只有在调用了这个属性时才会加载。

使用的前提是EntityManager不能处于关闭状态,否则会出现加载意外。

在jpa中OneToMany和ManyToMany中默认的加载方式就是延迟加载,目的是为了减少多的一方不必要的数据加载所带来的内存开销。

ManyToOne的默认加载属性是立即加载

例:mappedBy("order")则指定这个一对多关系中1的关系维护有n的一方的order属性维护。

ManyToOne(optonal=false)

指定该属性是为必选的,表现为从表中的外键不允许为空值。

@JoinColumn(name="order_id")//指定外键名称

public Order getOrder(){

  return order;

}

你可能感兴趣的:(jpa中延迟加载和关系维护问题)