mysql - JPA 映射的性能

标签 mysql performance hibernate jpa

现在我正在使用 JPA。我想知道的是:

我有很多相互映射的表。当我查看日志时,我发现经过简单查询后,正在从数据库中提取大量信息。如果一次有很多查询会怎样?或者它会正常工作吗?如何提高性能?

最佳答案

ORM 框架会带来开销。因为它的级别相当高,所以有时需要生成大量 native SQL 查询才能在一两行 JPQL 或纯 EntityManager 操作中获得您想要的结果。

但是,JPA 使用两个缓存 - L1 和 L2。一个在实体级别上运行,另一个在 PersistenceUnits 级别上运行。因此,您可能会看到生成了很多 SQL 查询,但一段时间后,您应该会缓存一些数据。

如果你对性能不满意,你可以尝试使用延迟加载集合或自己获取所需的数据(你可能对这件事感兴趣 Bozho's post)。

最后,如果您发现缓存没有提高您的性能并且手工制作的 JPQL 查询没有正确完成工作 - 您可以随时恢复为普通 SQL 查询。请注意,这些查询会绕过 JPA 缓存,并且可能需要您在执行 native 查询(或在事件事务开始时调用它)之前进行一些刷新。

尽管您会选择优化路线 - 首先在您的环境中测试,然后自己回答是否需要此优化。做一些重度测试,性能测试等等。

“过早的优化是万恶之源。” D. Knuth

关于mysql - JPA 映射的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10379683/

相关文章:

MySQL 最低排序和分组依据

mysql - MySQL 过程的 ALL ROWS 参数

performance - Solr 云性能

c++ - 重载运算符 : const vs non-const return type : any difference of performance?

java - org.hibernate.MappingNotFoundException : resource: com/ypd/a/entity/Employee. hbm.xml 未找到

mysql - allowMultiQueries 究竟做了什么?

php - 评级算法似乎关闭

javascript - Chrome 在高迭代次数上意外减速

java+hibernate webservice - 明显的死锁

java - 如何使用 H2、JPA 和 Hibernate 映射 JSON 列