将SQL语句保存在属性文件中是否是一种良好的做法Java/Spring

将SQL语句保存在属性文件中是否是一种良好的做法Java/Spring,java,spring,spring-boot,spring-jdbc,Java,Spring,Spring Boot,Spring Jdbc,我是设计应用程序结构的新手,最近我接到一个任务,在SpringBoot中开发一个应用程序。我还使用SpringJDBC进行数据库连接 在DAO层上工作时,我偶然想到,我的SQL语句应该保存在哪里?我首先想到的是财产档案。但后来当我在web上搜索时,我在大多数示例中看到SQL语句都在方法本身中 所以,我只是想知道什么是解决这个问题的好方法?就应用程序设计而言 属性文件中的SQL 方法体中的SQL 您应该看看,它将为您节省大量样板代码。您可以在注释中为存储库指定自定义SQL语句(必要时) 请参阅有

我是设计应用程序结构的新手,最近我接到一个任务,在SpringBoot中开发一个应用程序。我还使用SpringJDBC进行数据库连接

在DAO层上工作时,我偶然想到,我的SQL语句应该保存在哪里?我首先想到的是财产档案。但后来当我在web上搜索时,我在大多数示例中看到SQL语句都在方法本身中

所以,我只是想知道什么是解决这个问题的好方法?就应用程序设计而言

  • 属性文件中的SQL
  • 方法体中的SQL
您应该看看,它将为您节省大量样板代码。您可以在注释中为存储库指定自定义SQL语句(必要时)

请参阅有关使用
@Query
注释的自定义SQL的更多详细信息


在我看来,我认为最好将SQL与实际使用的代码放在一起,就像在本例中一样。

这实际上取决于您的项目拥有的SQL数量。如果您有十几个简单(即CRUD)查询,那么将这些查询放在代码中不会有什么坏处

如果您有许多复杂的查询,有些查询包含在其他查询中,有些SQL位被重用,等等,那么您应该考虑使用一些库来管理DB访问。实际上,属性文件并不是用来存储查询的(不过,让您的SQL跨无数个类更好!)

如果您使用JPA,您可以使用Spring数据;即使您不这样做,您也可以将SQL查询放在方法注释中,Spring将在运行时自动为您生成一个方法体


或者,如果您的项目需要大量SQL,请查看MyBatis。这对于具有大型和复杂查询的项目非常有用。它将为DAO生成方法体,并允许您将SQL放在
.xml
配置文件或方法注释中。

我更喜欢存储过程,而不是SQL语句我认为存储过程是最糟糕的反模式之一。您将不可能很容易地将应用程序移动到另一个数据库,调试有时可能是一场噩梦。15年前可能存在的所有好处或多或少都不再有效,缺点大于好处。