在属性文件中保留 SQL 语句是好习惯吗? - Java/Spring

Is it good practice to keep SQL statements in properties file? - Java/Spring

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

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

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

你应该看看 spring-data,它会为你节省很多样板代码。您可以在注释中为存储库指定自定义 SQL 语句(必要时)。

使用 @Query 注释查看更多详细信息 here and about custom SQL here

IMO,我认为最好将 SQL 与其实际使用的代码放在一起,就像在本例中所做的那样。

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

如果您有许多复杂的查询并且一些查询包含在其他查询中,一些 SQL 位被重复使用等,您应该考虑使用一些库来管理您的数据库访问。 属性 文件并不是用来存储查询的,真的(尽管,最好让你的 SQL 跨越无数 类!)。

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

或者,如果您的项目 SQL 繁重,请查看 MyBatis。它非常适合具有大型和复杂查询的项目。它将为您的 DAO 生成方法主体,并允许您将 SQLs 放置在 .xml 配置文件中,或者再次放置在方法注释中。