补充:1+N问题和缓存算法

1+N问题

问题描述

在manyToOne的关系中,JPA默认的fetch策略是EAGER积极的,因此在查找多方的表的时候会连带查询1方的表。

本来是使用join表连接查询一句SQL语句就解决的,但是hibernate不会就行表连接查询,而是先查多方的表发一句SQL,然后根据结果中的外键,一个外键一句SQL去查询1方的表,结果就变成了1+N句SQL语句了。

解决方法:

方式一:强制改变默认的抓取策略为LAZY

方式二:在JPQL中left join fetch,它就会以join表连接查询的方式。(推荐)

缓存算法

LRU 最近很少用

LFU 命中率低

FIFO 先进先出

你可能感兴趣的:(sql,算法,Hibernate,jpa)