春季启动 + 休眠 - 技术问题



我对Spring Boot和Hibernate有一些问题。

我和一位开发人员讨论过,他说我在 Jar 中编译了他的 Rest API,使用 Spring Boot 开发的 Rest API,并使用 Spring Boot 提供的 tomcat 服务器并将 jar 部署在服务器上。但就我而言,我使用 war 打包并部署在我的 tomcat 服务器上,但他说它的性能较差。

我不知道为什么,我问我您是否在微服务中使用 Spring 启动开发了您的 Resp API,并且您使用他的解决方案,您是否创建了多个 tomcat 实例?

关于休眠,我使用 HQL 进行一些查询,他说我这是不好的方式,因为使用 Sql 注入很危险,这是真的吗?

我需要一些可以给我建议的人的答案。

对不起,如果我的英语,它不是很好,非常感谢你,提前,你的回答。

在Java云领域有两个主要方向:

Java EE:

  1. 创建一个包含Java EE应用程序/Web服务器的Docker基础映像(例如Tomcat,WildFly,GlassFish,...(
  2. 创建(精简(WAR 文件
  3. 基于基础映像创建 Docker 映像,该映像将 WAR 文件部署到应用程序服务器

弹簧启动

  1. 使用 Spring Boot Maven 插件创建单个 JAR 文件
  2. 创建一个执行JAR文件的Docker镜像

我想你也可以混合这两种方法(创建一个Spring Boot WAR文件(,但是单个JAR文件方法在Spring Boot中更为常见(我目前正在使用这种方法(。

一些Java EE专家,如Adam Bien,提倡第一种方法(更少的依赖,更小的WAR文件,更小的Docker镜像,更多的标准API(尽管"标准"的含义目前正在随着从Java EE到Jakarta EE的过渡而改变((。

我无法告诉您哪一个性能更高。无论哪种方式,每个 Docker 映像都会启动一个服务器。

关于休眠和SQL注入: 我没有使用 HQL,而是使用 JPQL,但最终它或多或少与 JDBC 相同:不要将查询与用户的输入串联起来。始终使用某种带有变量的预准备语句来格式化用户输入。

如果您使用的是 Spring boot,您或多或少地实现了独立的应用程序(即使它是一个 Web 应用程序(,因此是的,每个 Spring boot 应用程序都会有一个自己的嵌入式 tomcat、jetty,无论实例如何。 SQL 注入与部署应用程序的方式无关,它只是您如何创建 HQL 查询的问题。

然而,这是一个有趣的讨论。在我们公司,我们非常老式,为我们的Web应用程序创建一个WAR文件,并将其部署在我们的Glassfish服务器上,其中其他Web应用程序在同一实例下运行。

佛瑞恩

最新更新