如何使用 javaee、javafx、jpa 正确设置应用程序层?

问题描述

我正在创建 javafx 桌面应用程序和 javaee 应用程序。它们在功能上几乎相同。两个应用程序都需要有自己的sql数据库,但数据库的结构相同(相同的表)。

我正在使用 Eclipse IDE,到目前为止我所做的是:

  • javafx 应用程序的一个项目
  • javaee 应用程序的一个项目
  • 一个数据层项目 (jpa)

我也在使用 module-info.java。对于 javafx 和 javaee 项目,我已将所需的包定义为我的数据层项目。

在这里发现:JPA and EJB - When do I need to use transaction?,我应该在使用 Java SE 时使用事务,我的 javafx 应用程序实际上是这样,但当我的应用程序是 javaee 时则不是。我不想为每个应用程序编写 jpa 项目。如何正确创建/设置项目,以便我的每个应用程序都有单独但相同的数据库

解决方法

在单独的代码存储库中拥有公共代码,发布它并在两个应用程序中添加对此模块的依赖项。在公共代码中使用 Flyway 或 Liquibase 来管理数据库架构。

考虑使用 Spring Boot 而不是 Java EE。 Spring 作为 Java EE 支持声明式事务(请参阅 Spring Data),但 Spring 更易于与 Java SE 一起使用。 AFAIK 可以将 JavaFX 应用程序与 Spring 结合使用。这也将允许您在 JavaFX 应用程序中使用声明性事务。这样可以更轻松地在后端和前端之间共享代码。