hibernate 在读写方面是如何工作的:
如果应用程序对 DB 进行更多写入,hibernate 是如何工作的?在这种情况下,我知道每次写入都必须刷新缓存,除此之外是任何性能开销(与 JDBC 相比)
如果应用程序只读取数据(非常少的写入/更新),休眠如何工作?在这种情况下,由于不需要刷新缓存,我们可以期望 hibernate 的性能与 JDBC 一样好(或更好)(如果调整得当)。
另外,想了解在 case2 中使用的最佳选项(除了 ORM)。
hibernate 在读写方面是如何工作的:
如果应用程序对 DB 进行更多写入,hibernate 是如何工作的?在这种情况下,我知道每次写入都必须刷新缓存,除此之外是任何性能开销(与 JDBC 相比)
如果应用程序只读取数据(非常少的写入/更新),休眠如何工作?在这种情况下,由于不需要刷新缓存,我们可以期望 hibernate 的性能与 JDBC 一样好(或更好)(如果调整得当)。
另外,想了解在 case2 中使用的最佳选项(除了 ORM)。
添加额外的层总是性能较差。然而,这个额外的层有时也会减少开发时间。因此,这一切都取决于您的用例和性能要求。如果您使用 ORM,那么您可以为读取和查询启用二级缓存,这就是您的应用程序级性能。但有时本地数据库缓存就足够了(这样集群中的每个节点都可以避免缓存)。
Hibernate 是一个可以使开发更容易的工具。我觉得(根据我自己的经验)Hibernate 开销不是很大。您可能最终会编写自己的 sql 结果到对象映射。如果你做得好,它可能会比 Hibernate 快一点。然而:
总而言之,是的,Hibernate 有它的开销,但对我来说,调整功能非常重要,在复杂的应用程序中,使用 Hibernate 比使用普通 JDBC 有可能(而且很可能)具有更好的性能。我不需要说使用 Hibernate 和 QueryDSL 开发比使用普通 JDBC 快得多。