java - Spring boot + Hibernate - 技术问题
问题描述
我对 Spring Boot 和 Hibernate 有一些疑问。
我和一位开发人员讨论过,他说他在 Jar 中编译了他用 Spring Boot 开发的 Rest Api,并使用 Spring Boot 提供的 tomcat 服务器并将 jar 部署在服务器上。但在我的情况下,我使用战争包装并部署在我的 tomcat 服务器上,但他说它的性能较差。
我不知道为什么,我问我你是否在微服务中使用 Spring boot 开发了你的 Resp Api 并且你使用了他的解决方案,你是否创建了多个 tomcat 实例?
关于休眠,我使用 HQL 进行一些查询,他说这是不好的方式,因为 Sql 注入很危险,是真的吗?
我需要一些可以给我建议的人的答案。
对不起,如果我的英语不太好,非常感谢您的回答。
解决方案
在 Java Cloud 领域有 2 个主要方向:
Java EE:
- 创建一个包含 Java EE 应用程序/Web 服务器的 Docker 基础镜像(例如 Tomcat、WildFly、GlassFish 等)
- 创建一个(瘦)WAR 文件
- 基于您的基础镜像创建一个 Docker 镜像,该镜像将 WAR 文件部署到应用服务器
春季启动:
- 使用 Spring Boot Maven 插件创建单个 JAR 文件
- 创建执行 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 相同:不要将来自用户的输入串连查询。始终使用某种带有变量的准备好的语句来格式化用户输入。
推荐阅读
- node.js - node.js - 如何将变量除以数组中的数字
- r - 如何在 R 中为“游侠”设置数据。错误:列中缺少数据
- c# - 为什么启动 Azure Function 时没有使用 startup.cs 文件?
- javascript - 如何让这个 jQuery scrollTop() 工作......?
- node.js - 无法使用 VUE 公共文件夹中的 png 图像
- python - Selenium,我执行时如何不打开隐身模式
- javascript - Flow 抱怨无类型导入
- java - 限制类及其成员的可访问性是否是更安全代码的有效做法?
- swiftui - 按下按钮后如何创建指令提示?
- c - SDL_GetError() 在 macOS 上返回一个未记录的错误