Получение байта[] из базы данных отнимает много времени

#java #database #jpa #binary #pdfbox

Вопрос:

Я сохраняю шрифт в базе данных в двоичном виде, каждый раз, когда я вынимаю шрифт, это занимает 1-2 минуты при размере шрифта 3 Мб. Есть ли какой-нибудь способ это исправить. Спасибо.

     private PDFont getFont(PDDocument doc, DesignElement designElement)
        throws IOException {
    OTFParser otfParser = new OTFParser();
    TTFParser ttfParser = new TTFParser();
    byte[] bytes = designElement.getFontMaster().getFontFile();
    InputStream inputStream = ByteSource.wrap(bytes).openStream();
    if (designElement.getFontMaster().getExt().equals("otf")) {
        OpenTypeFont otf = otfParser.parse(inputStream);
        return PDType0Font.load(doc, otf, false);
    } else {
        TrueTypeFont ttf = ttfParser.parse(inputStream);
        return PDType0Font.load(doc, ttf, false);
    }
}
 

Комментарии:

1. Какое отношение к этому имеет база данных? Я не вижу никакого кода базы данных. Я предполагаю, что анализ двоичного файла в объект шрифта-это то, что занимает львиную долю времени здесь.

2. Можете ли вы поделиться кодом, когда вы извлекаете данные из базы данных?

3. Я использую Spring Data JPA, я просто вызываю его с помощью метода findbyid ().

4. designElement.getFont Master(). getFontFile(). Мастер шрифта связан с элементом дизайна. Я получаю элемент дизайна с помощью findById(). Позже getFontFile () — это метод получения двоичного файла.

5. Я опубликовал структуру таблицы ниже