Не совсем понятно, как вы используете JPA здесь, но, конечно, вам не нужно иметь дело непосредственно с типом данных Blob, если вы используете JPA.
Вам просто нужно объявить поле врассматриваемая сущность @Lob выглядит примерно так:
@Lob
@Basic(fetch = LAZY)
@Column(name = "image")
private byte[] image;
Затем, когда вы извлекаете вашу сущность, байты будут снова считываться в поле, и вы сможете поместить их в поток и выполнитьвсе, что вы хотите с ними.
Конечно, вам понадобятся методы получения и установки в вашей сущности для выполнения преобразования байтов.В приведенном выше примере это будет выглядеть примерно так:
private Image getImage() {
Image result = null;
if (this.image != null && this.image.length > 0) {
result = new ImageIcon(this.image).getImage();
}
return result;
}
И сеттер примерно так:
private void setImage(Image source) {
BufferedImage buffered = new BufferedImage(source.getWidth(null), source.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffered.createGraphics();
g.drawImage(source, 0, 0, null);
g.dispose();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
ImageIO.write(buffered, "JPEG", stream);
this.image = stream.toByteArray();
}
catch (IOException e) {
assert (false); // should never happen
}
}
}