第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以從 Spring Boot 應用程序壓縮嵌入式 HSQL 數(shù)據(jù)庫?

是否可以從 Spring Boot 應用程序壓縮嵌入式 HSQL 數(shù)據(jù)庫?

萬千封印 2023-01-05 16:55:11
我創(chuàng)建了一個帶有嵌入式、基于文件的 HSQL 數(shù)據(jù)庫的 Spring Boot 應用程序。正在創(chuàng)建的數(shù)據(jù)文件變得相當大,特別是考慮到使用模型,所以我想知道是否有辦法壓縮它?是手動還是自動?HSQL 文檔表明有一個SHUTDOWN COMPACT命令(根據(jù)文檔,這可能需要一段時間),但我不知道如何配置 Spring Boot 來使用它。我愿意SHUTDOWN COMPACT在關(guān)閉 Spring Boot 應用程序時強制執(zhí)行 a(如果這是唯一的選擇),或者找到一種方法來發(fā)出手動“緊湊”命令(如果 HSQLDB 支持這樣的命令),或者人們可能有的任何其他建議.
查看完整描述

2 回答

?
30秒到達戰(zhàn)場

TA貢獻1828條經(jīng)驗 獲得超6個贊

如前所述,以前的答案是一種選擇,但 boly38 的建議更清晰,成為我的首選方法。


@PreDestroy

public void preDestroy() {

    try {

        jdbcTemplate.execute("SHUTDOWN COMPACT");

    } catch (DataAccessException e) {

        // do nothing

    }

}

這允許應用程序控制何時壓縮數(shù)據(jù)庫,并從最終用戶手中移除潛在的錯誤選項。


查看完整回答
反對 回復 2023-01-05
?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超9個贊

不確定這是否是最佳解決方案,但我確實設法找到了解決方案。CHECKPOINT DEFRAG我添加了一個可以在數(shù)據(jù)庫上手動執(zhí)行命令的 REST API 。


在主要的 Spring Boot 應用程序類中,我添加了一個獲取JdbcTemplate這樣的方法:


@Bean

public JdbcTemplate jdbcTemplate(DataSource dataSource) {

    return new JdbcTemplate(dataSource);

}

然后我決定創(chuàng)建一個新的 REST 控制器(而不是使用現(xiàn)有控制器),以提供一個 API 來手動壓縮數(shù)據(jù)庫:


@RestController

@RequestMapping("/admintools")

public class TEVAdminToolsController {


    @Autowired

    private JdbcTemplate jdbcTemplate;


    @GetMapping("/compressDB")

    public Boolean compressDB() {

        try {

            jdbcTemplate.execute("CHECKPOINT DEFRAG");

        } catch (DataAccessException e) {

            return false;

        }


        return true;

    }

}

從安全角度來看,這不是很好;對于我的用例,這不是一個問題,但對于其他人來說,它可能是一個非啟動器。

這其中的兩個要點:

  1. 對于@Bean得到一個JdbcTemplate

  2. jdbcTemplate.execute()執(zhí)行“原始”SQL 命令的調(diào)用


查看完整回答
反對 回復 2023-01-05
  • 2 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號