我想建立一个网站/应用程序。类模型大约有 100 个对象,并不是特别复杂。
该网站需要构建为处理大约 30,000 个并发用户,但它应该有可能处理更多。
我想使用现成的持久性框架而不是编写自己的 jdbc 来访问数据库。
我别无选择,只能使用关系数据库。
我希望它内置某种形式的缓存,也希望能够自定义 sql,因为这通常是性能调整所必需的。
关于我应该使用哪种持久性框架有什么建议吗?
更新:谢谢大家。我认为在这种情况下,手工编写 sql 代码的能力是王牌。如果您有权访问它,则可以进行一些并发调整。虽然我同意,但您也可以在 hibernate/jpa 中访问它,这是异常(exception)而不是规则。 myBatis 也是一种更轻量级、更少“魔法”的持久性框架。此外,出于性能和扩展的原因,我认为在持久性框架管理集合的地方使用太多外键并不明智,因此我可能无论如何都不会在 hibernate 中使用该功能。这将允许我在必要时对数据库进行分片。我还认为 myBatis 可能是一个更容易掌握的持久性框架。 AFAIK,例如,它没有透明的持久性。您的回答已确认没有其他更适合这些要求的持久性框架。
最佳答案
如果您想要手动优化的 SQL,那么我建议 myBatis (以前称为 iBatis)。它使用您提供的手写 SQL 为您处理 JDBC 机制以及对象列映射。
它不会为您做的是对象关系映射(即自动处理关联和集合)。如果这对您来说更重要,那么像 EclipseLink 或 Hibernate 这样的 JPA 实现是显而易见的选择。这些也可以处理自定义 SQL,但它比 myBatis 更繁琐。
两者都应该能够毫无问题地处理您的负载需求 - 问题是您的数据库能否处理它。
关于java - 可扩展、低开销、高性能的 Java 持久性框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4625085/