2 回答
TA贡献1876条经验 获得超5个赞
Java云领域有两个主要方向:
Java EE:
创建一个 Docker 基础镜像,其中包括 Java EE 应用程序/Web 服务器(例如 Tomcat、WildFly、GlassFish 等)
创建一个(薄)WAR 文件
根据您的基础映像创建一个 Docker 映像,将 WAR 文件部署到应用程序服务器
春季启动:
使用 Spring Boot Maven 插件创建单个 JAR 文件
创建执行 JAR 文件的 Docker 映像
我想您也可以混合使用这两种方法(创建 Spring Boot WAR 文件),但单个 JAR 文件方法在 Spring Boot 中更为常见(我目前正在使用这种方法)。
Adam Bien 等一些 Java EE 专家提倡第一种方法(更少的依赖项、更小的 WAR 文件、更小的 Docker 映像、更标准的 API(尽管“标准”的含义目前随着从 Java EE 到 Jakarta EE 的过渡而发生变化)。
我无法告诉你哪一个的性能更高。无论哪种方式,每个 Docker 镜像都会启动一个服务器。
关于 Hibernate 和 SQL 注入:我没有使用 HQL,而是使用 JPQL,但最终它或多或少与 JDBC 相同:不要将查询与用户的输入串联起来。始终使用某种带有变量的准备好的语句来格式化用户输入。
TA贡献1772条经验 获得超6个赞
如果您使用 Spring Boot,您或多或少会实现一个独立的应用程序(即使它是一个 Web 应用程序),因此,是的,每个 Spring Boot 应用程序都会有一个自己的嵌入式 tomcat、jetty 等实例。SQL 注入与您如何部署应用程序的方式无关,它只是您如何创建 HQL 查询的问题。
然而,这是一个有趣的讨论。在我们公司,我们的做法相当老式,为我们的 Web 应用程序创建一个 WAR 文件,并将其部署在我们的 Glassfish 服务器上,其中多个其他 Web 应用程序在同一实例下运行。
添加回答
举报