如何摆脱具有 Oracle 本机查询的已开发应用程序的数据库依赖性?

How to get rid of database dependency of an already developed application having Oracle native queries?

我有一个具有庞大代码库的应用程序,它使用 Oracle 数据库。我想开发一个休眠应用程序,它可以与来自上述应用程序的传入和传出请求进行交互,而无需任何数据库依赖性。

就像我想将数据库更改为 mysql 或 postgresql 它不会有任何问题。这实用吗?可以吗?寻求帮助。

至于实用性,应用程序很少更改数据库。虽然这个想法听起来不错,但并不经常实现,而且通常使用内置数据库功能所带来的好处有时会超过保持数据库独立性的工作。

至于做,当然可以在SQL个数据库之间。从 SQL 到 noSQL 有点棘手,因为他们正在 JPA 中支持它们。如果对此感兴趣,请查看 Hibernate OGM. If you want to truly keep it so you can easily switch databases you need to stick to the JPA standard. See this 从数据库生成符合 JPA 的实体。只要您仅使用 JPA,您就可以轻松地在提供 JPA 实现的数据库之间切换。然后你只需包含正确的实现设置方言就可以切换了。

如果您有权更改当前应用程序,则只需使用您的 JPA 代码更新包含硬编码查询的每个操作可能会更容易。如果您有单元测试,那么这个过程也会变得更加容易。

如果你想写一些新东西,但不改变前端,你需要处理前端表单提交的任何操作。确保它们在相同的路径和相同的 HTTP 方法(GET、POST、PUT 等)上可用,这些方法采用相同的参数,并返回与您今天应执行的操作相同的结构。

这两种方法都允许您一个接一个地替换它们。虽然写了一些新东西,但如果新应用程序和旧应用程序不在同一个域中或者如果涉及 authentication/authorization,则一次替换它们会有点困难。

祝你好运!