我对Spring Boot和Hibernate有一些疑问。
我与一位开发人员讨论过,他说我在Jar中编译使用Spring Boot开发的Rest Api,并使用Spring Boot提供的tomcat服务器并将该jar部署在服务器上。但就我而言,我使用战争包装并将其部署在tomcat服务器上,但他表示性能较低。
我不知道为什么,我问我,如果您使用Spring boot在微服务中开发了Resp Api,并且使用了他的解决方案,您是否创建了多个tomcat实例?
关于休眠状态,我使用HQL进行了一些查询,他说我这样做很不好,因为使用Sql注入很危险,这是真的吗?
我需要一些可以给我建议的人的答案。
对不起,如果我的英语不好,请先非常感谢您的回答。
答案 0 :(得分:1)
在Java Cloud空间中,有2个主要方向:
Java EE :
Spring Boot :
我想您也可以将两种方法混合使用(创建一个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应用程序在同一实例下运行。
弗洛里安