【发布时间】:2012-05-18 01:20:51
【问题描述】:
我刚刚在 JPA (EclipseLink) 的数据库中打开了查询日志记录,并亲眼目睹了 JPA“优化”和“缓存”的恐怖。
例如,像这样做一个简单的 JPA 查询:
SELECT p FROM Picklist p;
... 将导致 JPA 对数据库执行一百万次 SQL 查询(每条记录一个查询,因此从 id=[...] 的选项列表中选择 *)。而且 Picklist 是一个简单的实体!
为什么它不执行 SELECT * FROM Picklist 而只是在内存中执行其他所有操作(填充持久性上下文或其他)?
是否需要一些特殊的开关来告诉它这样做?为什么会这样?
【问题讨论】:
-
为什么不是 SELECT p FROM Picklist p; ?没有(选择列表 p)
标签: jpa ejb eclipselink