首页 > 解决方案 > Spring boot + Hibernate - 技术问题

问题描述

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

我和一位开发人员讨论过,他说他在 Jar 中编译了他用 Spring Boot 开发的 Rest Api,并使用 Spring Boot 提供的 tomcat 服务器并将 jar 部署在服务器上。但在我的情况下,我使用战争包装并部署在我的 tomcat 服务器上,但他说它的性能较差。

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

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

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

对不起,如果我的英语不太好,非常感谢您的回答。

标签: javahibernatespring-bootspring-data-jpa

解决方案


在 Java Cloud 领域有 2 个主要方向:

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 映像都会启动一个服务器。

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


推荐阅读