Spring Boot + Hibernate-技术问题

时间:2019-10-03 07:01:50

标签: java hibernate spring-boot spring-data-jpa

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

我与一位开发人员讨论过,他说我在Jar中编译使用Spring Boot开发的Rest Api,并使用Spring Boot提供的tomcat服务器并将该jar部署在服务器上。但就我而言,我使用战争包装并将其部署在tomcat服务器上,但他表示性能较低。

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

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

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

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

2 个答案:

答案 0 :(得分:1)

在Java Cloud空间中,有2个主要方向:

Java EE

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

Spring Boot

  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大致相同:不要将查询与用户输入的字符串连接在一起。始终使用带有变量的预备语句来格式化用户输入。

答案 1 :(得分:0)

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

但是,这是一个有趣的讨论。在我们公司中,我们已经过时了,创建Web应用程序的WAR文件,并将其部署在我们的Glassfish服务器上,该服务器上的其他Web应用程序在同一实例下运行。

弗洛里安