我需要在我的网站上构建一个报告部分,其中包含一些相当复杂的查询,包括 UNION、GROUP_CONCAT 等。到目前为止,JPA 与我的实体的集成保持了数据库独立性。目前系统使用 MsSQL,但我们希望确保以后可以根据需要切换到 Postgres 或 MySQL。
对这些报告采取什么好方法,以便无需太多工作就可以使其在 MySQL 或 Postgres 上运行?
该网站还使用 Spring
最佳答案
在我看来,您的问题或多或少是“我如何利用供应商特定的功能而不与该供应商绑定(bind)?”。
这并不是一个简单的答案;也许最灵活的方法是坚持使用 JPA 并吸收性能损失。
其他可能性:
将报告定义为发布一组接口(interface)的组件。使用 CDI 注入(inject)与您选择的数据库相关的实现
上述的变体,设置您自己的 DAO 接口(interface)以进行数据访问。就像另一个 ORM 框架一样,更具体,可以有更好的性能。在此基础上构建报告。
如果您的业务允许,请选择 RDBM 来处理报告。在夜间(如果没有太多数据,甚至可以按需),将生产数据库转储到其中。
关于java - 如何使站点数据库的报告部分独立,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12218332/