我希望我能以适当的方式对此进行解释。
我有一个带有服务器表的Sql Server数据库。 在我的Spring-Boot应用程序中,我需要查询这些表,其中有几张表永远不会更改。
例如,为了简单起见,让我们假设它是一个Book表,而我以不同的方式,通过价格,id,ISBN来查询图书。
所以我想到的第一件事是使用Redis,但这对我不利。为什么?
好吧,Redis将数据存储在一个键值对中,所以,如果我捕获了整个表,那么当我想对数据进行相同的复杂查询时,就在我的代码中(给我这本书的书号)不可能,我将需要为每个操作创建不同的Catched方法,因此,下次我请求相同的数据时,如果缓存中存在该数据,则不会去查询数据库。
这就是为什么我虽然要使用H2内存数据库,却可以在内存表中填写我的“ Book”并对其进行各种操作的原因,因为它像普通数据库一样工作并且我可以查询任何内容。
现在,我的问题是
:我知道我可以将指向某些脚本的初始数据加载到H2中,没关系。 但是我想用我在SQL Server Book表中已经拥有的数据填充内存数据库中的“ Book”。
您怎么看?有可能吗?有什么想法吗?
提前谢谢!
答案 0 :(得分:0)
您可以实现CommandLineRunner或ApplicationRunner进行数据初始化 https://dzone.com/articles/spring-boot-applicationrunner-and-commandlinerunne
(资源中具有“ spring.datasource.data = script.sql”属性的script.sql也可用于数据加载)