java - 如何使站点数据库的报告部分独立

标签 java spring jpa

我需要在我的网站上构建一个报告部分,其中包含一些相当复杂的查询,包括 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/

相关文章:

java - 使 JList 的选定索引消失

java - JPA:双向 m:n 关系中的数据访问

spring - 在 Spring 中使特定方法成为非事务性的

java - Spring MVC 上下文 bean : Is it bad to modify objects from getBean()? 线程问题

java - 找到多于一行具有给定标识符的行

hibernate - 使用 Hibernate 和 HSQLDB 找不到表

java - Android 服务器应用程序 : SSLHandshakeException (unable to find valid certification path to requested target)

java - ScalaTest - java.lang.IncompatibleClassChangeError : Implementing class

java - 从命令行创建 Java 包的正确方法是什么? (Maven 的麻烦)

java - 使用 JWT token 安全性的 Spring Boot 单元测试