java - 可扩展、低开销、高性能的 Java 持久性框架

标签 java jakarta-ee persistence

我想建立一个网站/应用程序。类模型大约有 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/

相关文章:

java - 为什么Eclipse不生成完整的persistence.xml?

python - python (cherrypy) Web 应用程序的持久性?

java - 从 Pane 中删除元素时,阻止 GridBagLayout 调整列/行的大小?

java - cordova 构建问题 - javac - 版本无法运行

java - SpringMVC - 维护国家等静态列表

java - 基于 JSF JDBC 领域表单的身份验证搜索(按用户名和电子邮件地址)

java - 获取对象的大小

java - 持久化实体对象时出现 Hibernate IllegalArgumentException : Cannot set field 'id' to entity object?

java - 在一段时间后调用 API 时第一次获取连接重置异常

java - 数据库模型国际化玩法框架