Если изображения в формате JPEG, то качество сжатия фото будет на каждом желаемом уровне: высокое сжатие и низкое качество до обратного.Вы можете / должны ограничить размеры изображения (ширина и высота).См. ImageWriter ImageIO и параметры качества ImageIO.
Для больших двоичных объектов вы должны добавить:
@Lob
@Column(columnDefinition = "MEDIUMBLOB")
private byte[] photo;
. Возможно, лучше иметь поле изображения в своей собственной таблице базы данных, поэтомуисходная таблица запрашивается гораздо быстрее.
Как уже упоминалось, можно также хранить изображения в файловой системе, возможно, под сгенерированным уникальным идентификатором:
UUID uuid = UUID.randomUUID();
String fileName = uuid.toString() + ".jpg";
В общем случае, используя поле byte[]
или локальный объект неоптимален, так как он излишне заряжает сервер памятью.Сразу читать и писать в ответ лучше - вне JPA.Может быть, нативный запрос, если вы хотите что-то в базе данных.