Imagem no banco de dados

4 respostas
Bambatera

Garela seguinte, estou usando o PostgreSQL 9.2 e programando em Java Swing utilizando o Netbeans, como posso fazer para armazenar imagens no banco de dados sendo que utilizo JPA para conexão ao banco?

Desde já agradeço a ajuda!!!

4 Respostas

jaboot

Olha, o que muita gente costuma fazer é não gravar as imagens no banco, mas sim o caminho delas no servidor.

Tem gente que fala que o banco fica pesado, tem gente que diz o contrário… eu nunca soube ao certo, mas nem todos bancos tem o poder de armazenar arquivos.

mateusviccari

se quiser gravar no banco mesmo usa array de bytes(byte[])

sergiotaborda

jaboot:
Olha, o que muita gente costuma fazer é não gravar as imagens no banco, mas sim o caminho delas no servidor.

Tem gente que fala que o banco fica pesado, tem gente que diz o contrário… eu nunca soube ao certo, mas nem todos bancos tem o poder de armazenar arquivos.

De fato não é boa ideia.
Na prática o que deveria ser feito era ter a imagem num cache com backup num banco de dados para não se perder ( por exemplo, a foto do funcionário no cadastro de funcionários).
Tem apenas a imagem no servidor web é errado porque a imagem em si, é um dado. Mas sempre lê-la do banco de dados também não é bom.
Por isso um cache vem mesmo a calhar , mas depende muito da frequência que a imagem é lida.

Para usar com JPA tem a opção de BLOB com array de byte.
Mas seria melhor disponibilizar isso como InputStream ( pois o array é mutável);

Uma opção , se usa apenas o PostgreSQL é usar uma truques da api do driver dele , que disponibilizam o inputstream. Isto é mais performático que usar o JPA, mas só funciona se vc amarrar seu sistema com o PostgreSQL para sempre.

Considere também guarda no PostgreSQL as referencias das imagens e usa um NoSQL para guardar a imagem em si.

A

E ae galera

Passei pela mesma situação alguns meses atrás, e concordo jaboot pela seguinte questão performance.
A questão é a seguinte a opçõa blob é bem vinda, mas tem que levarmos em consideração o quanto de imagem e o tamanho dessa imagem que será gravada em banco, e todo o processo entre fazer input e gerar um array será mais lento do que criar um path salvar no banco e fazer essa requisição em disco, é como eu disse tudo depende do tamanho e quantidade.
No meu caso eu fiz um album e ficou muito mais performatico acessar via disco.

Criado 30 de janeiro de 2013
Ultima resposta 31 de jan. de 2013
Respostas 4
Participantes 5