从JPA迁移回简单的SQL

boz*_*ozo 8 jpa jdbc

在使用TopLink/EclipseLink在一个包含大约100个表的生产应用程序中进行多年开发之后,我们已经确定足够的并且JPA不值得增加其实际操作的复杂性和不确定性,以及SQL(使用DBUtil之类的包装器等等)像这样)可以为我们做正确的工作.

你能否建议如何将一个相当大的JPA应用程序迁移到JDBC/SQL,这样会让JPA仍在运行(即在带有GUI的webapps中),但这样我们仍然可以从"降级"到JDBC开始?

我们有实体和DAO,但我真正担心的是JPA entitycache(主要的) - 是否可以完全禁用它,以便JPA充当简单的connection.begin(); entries ... connection.commit(); 在过渡期间,直到我们彻底摆脱它?

A4L*_*A4L 2

我希望你们有一些良好的单元和集成测试。如果没有,那么就从这里开始。

之后,第一步您可以创建一个abstract factory,通过它提供对所有 DAO 和实体的访问权限,并更改客户端的所有访问权限以访问该工厂。在此步骤中,您必须为该工厂提供一个实现,创建一个具体工厂JpaAccessFactory并让其方法返回使用 JPA 填充的 DAO 和实体。

当您确定第一步没有出现任何问题时。然后继续第二步。

创建一个工厂实现,SqlAccessFactory使用 SQL 填充 DAO 和实体(实体类的对象实际上只是 DAO)。expected编写一些使用两个工厂的单元测试,并使用提供的 JpaAccessFactoryactual提供的进行断言SqlAccessFactory

当您完成表及其所有依赖项的工厂方法的实现后SqlAccessFactory,让使用此方法提供的 DAO 或实体的客户端/页面使用新工厂来检索它。您可以将其配置为可配置,这样您就不必更改代码来更改正在使用的女巫工厂。如果您发现某些事情不正常,这还有一个好处是可以轻松切换回来。

尚未实现的工厂方法SqlAccessFactory可能会抛出异常

throw new UnsupportedOperationException
    ("Not yet implemented, please configure your client / page to use JPA.");
Run Code Online (Sandbox Code Playgroud)

我希望这能给我们一些从哪里开始以及如何开始的提示。