我刚刚打开了 JPA (EclipseLink) 数据库中的查询日志记录,并目睹了 JPA“优化”和“缓存”的恐怖。
例如,执行如下简单的 JPA 查询:
SELECT p FROM Picklist p;
... 将导致 JPA 对数据库执行一百万次 SQL 查询(每条记录一个查询,因此从 id=[...] 的选项列表中选择 *)。Picklist 是一个简单的实体!
为什么它不执行 SELECT * FROM Picklist 而只是在内存中执行其他所有操作(填充持久性上下文或其他)?
它是否需要一些特殊的开关来告诉它这样做?为什么它会这样工作?