为了账号安全,请及时绑定邮箱和手机立即绑定

Spring boot + Hibernate - 技术问题

Spring boot + Hibernate - 技术问题

隔江千里 2023-09-20 17:01:45
我有一些关于 Spring Boot 和 Hibernate 的问题。我和一位开发人员讨论过,他说他将他用 Spring Boot 开发的 Rest Api 编译在 Jar 中,并使用 Spring Boot 提供的 tomcat 服务器并将 jar 部署在服务器上。但就我而言,我使用 war 打包并部署在我的 tomcat 服务器上,但他说它的性能较差。我不知道为什么,我问我,如果您使用 Spring boot 在微服务中开发 Resp Api 并且使用他的解决方案,您是否创建多个 tomcat 实例?关于hibernate,我使用HQL进行一些查询,他说这是不好的方法,因为Sql注入很危险,这是真的吗?我需要一些能给我建议的人的答案。抱歉,我的英语不太好,提前非常感谢您的回答。
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

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

Java EE

  1. 创建一个 Docker 基础镜像,其中包括 Java EE 应用程序/Web 服务器(例如 Tomcat、WildFly、GlassFish 等)

  2. 创建一个(薄)WAR 文件

  3. 根据您的基础映像创建一个 Docker 映像,将 WAR 文件部署到应用程序服务器

春季启动

  1. 使用 Spring Boot Maven 插件创建单个 JAR 文件

  2. 创建执行 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 相同:不要将查询与用户的输入串联起来。始终使用某种带有变量的准备好的语句来格式化用户输入。


查看完整回答
反对 回复 2023-09-20
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

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

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


查看完整回答
反对 回复 2023-09-20
  • 2 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信